<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://docs.moodle.org/32/en/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Moquist</id>
	<title>MoodleDocs - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://docs.moodle.org/32/en/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Moquist"/>
	<link rel="alternate" type="text/html" href="https://docs.moodle.org/32/en/Special:Contributions/Moquist"/>
	<updated>2026-04-11T00:18:56Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://docs.moodle.org/32/en/index.php?title=TeX_notation_filter&amp;diff=64725</id>
		<title>TeX notation filter</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/32/en/index.php?title=TeX_notation_filter&amp;diff=64725"/>
		<updated>2009-10-27T15:43:48Z</updated>

		<summary type="html">&lt;p&gt;Moquist: /* Installing the binaries */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Location: TeX Notation settings link in &#039;&#039;Administration &amp;gt; Modules &amp;gt; Filters &amp;gt; Manage filters&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The TeX Filter converts TeX code into GIF images. It uses a binary program(s) on the server to render the images (either the full LaTeX implementation, in Moodle 1.6 or later, or the [[MimeTeX]] binary that ships with Moodle for various platforms). Versions of MimeTex for Linux (glib2.3), Windows, Mac OS X and FreeBSD are included in the Moodle distribution. &lt;br /&gt;
&lt;br /&gt;
No additional software or plugins are required on the client computers to display the images.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction - A Tale of Two Filters ===&lt;br /&gt;
&lt;br /&gt;
To avoid confusion you should note that on all newer versions of Moodle, the TeX filter has two separate methods for converting the TeX notation to images. The preferred method is a collection of three binaries that you are responsible for installing and configuring on your server. The filter settings page relates entirely to this method. If this fails for any reason the filter will fall back to a single binary - mimetex - that is included with Moodle. A number of different builds are included for popular operating systems. &lt;br /&gt;
&lt;br /&gt;
=== Usage ===&lt;br /&gt;
&lt;br /&gt;
To use the filter the resource should include a TeX expression delimited by double-dollar signs. Example:&lt;br /&gt;
 &lt;br /&gt;
    $$ \sqrt{x + y} $$&lt;br /&gt;
&lt;br /&gt;
=== Using MimeTeX ===&lt;br /&gt;
&lt;br /&gt;
MimeTeX is a number of pre-built binaries that are included in the Moodle standard distribution and are located in the filters/tex directory. There are a number of different versions for different operating systems. The TeX filter picks the appropriate binary for the detected host operating system (you will need to hack the script if your operating system is not included). Note that your web server needs to be set up with appropriate permissions for running binaries in that location. This appears to be particularly problematic on the Windows platform. See the [http://moodle.org/mod/forum/view.php?id=752 Mathematical Tools Forum] for more information.&lt;br /&gt;
&lt;br /&gt;
If you are using the &#039;&#039;&#039;windows installer package&#039;&#039;&#039;, type something like this into the box called &#039;path of &#039;&#039;latex&#039;&#039; binary&#039;&lt;br /&gt;
 &amp;quot;C:\Moodle_webserver\moodle\filter\tex\mimetex.exe&amp;quot; &lt;br /&gt;
Where you replace &#039;Moodle_webserver&#039; with the real path to your moodle install. Note that on windows, the red x to the right of the input box will never go away, even when the details are correct.&lt;br /&gt;
&lt;br /&gt;
If you use TeX in a GIFT question import file you must escape  { } and = (even # and ~) with a \ before each symbol.&lt;br /&gt;
&lt;br /&gt;
=== Improvements in 1.6 ===&lt;br /&gt;
&lt;br /&gt;
Moodle 1.6 adds the ability to use the full TeX formatting facilities (MimeTex only provides a subset). Three external binaries are used to render the images which may need setting up for your system. The filter will first check for a LaTeX renderer (Ghostscript is also required for this method, ImageMagick in the case of Linux) and failing that will use the simpler [[MimeTeX]] binary included in the Moodle distribution. LaTex permits the whole range of syntax, whereas [[MimeTeX]] only supports a mathematical subset.&lt;br /&gt;
&lt;br /&gt;
=== Settings Page ===&lt;br /&gt;
&lt;br /&gt;
The TeX filter settings page are primarily intended to adjust the operation of the LaTeX renderer. The defaults for the three path settings are selected according to the detection of the operating system on which Moodle is running. These are simply suggested common values - Moodle does not check that the binaries actually exist at these locations. Later versions of Moodle show a green tick or a red cross next to the path setting - this shows that the binary exists at that location (only). The settings have no effect on the operation of the MimeTex binary (used if any of these binaries are not found).&lt;br /&gt;
&lt;br /&gt;
==== Installing the binaries ====&lt;br /&gt;
&lt;br /&gt;
This depends on your platform, but for a typical Linux install you are going to need a latex implementation (e.g. tetex) and the convert binary (e.g, from ImageMagick). A typical command - in this case for Ubuntu - that installs everything you need would look something like:&lt;br /&gt;
&lt;br /&gt;
    apt-get install tetex-base tetex-bin tetex-extra imagemagick ghostscript&lt;br /&gt;
&lt;br /&gt;
You may need to experiment a bit (for example, ImageMagick doesn&#039;t seem to work properly on Solaris gut Ghostscript does). If you find the combination that works for your system kindly add the info to this page!&lt;br /&gt;
&lt;br /&gt;
==== LaTeX preamble ====&lt;br /&gt;
&lt;br /&gt;
Enables the LaTeX preamble to be specified. The default should work for most users, but you may need to change it to support non-latin character sets etc. Please see the LaTeX documentation for further details.&lt;br /&gt;
&lt;br /&gt;
==== Transparent colour ====&lt;br /&gt;
&lt;br /&gt;
This should be set to your normal text background colour. The default setting is #FFFFFF (i.e., white). &lt;br /&gt;
&lt;br /&gt;
==== Density ====&lt;br /&gt;
&lt;br /&gt;
This setting effects the size of the resulting image.&lt;br /&gt;
&lt;br /&gt;
==== Path of &#039;&#039;latex&#039;&#039; binary ====&lt;br /&gt;
&lt;br /&gt;
Path to standard latex binary.&lt;br /&gt;
&lt;br /&gt;
On a MacOS X, the path is &amp;quot;/usr/texbin/&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Path of &#039;&#039;dvips&#039;&#039; binary ====&lt;br /&gt;
&lt;br /&gt;
Path to standard dvips binary - generally distributed as part of a LaTeX system.&lt;br /&gt;
&lt;br /&gt;
On a MacOS X, the path is &amp;quot;/usr/texbin/&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Path of &#039;&#039;convert&#039;&#039; binary ====&lt;br /&gt;
&lt;br /&gt;
Path to standard convert binary. This is distributed as part of the Ghostscript system, or ImageMagick in Linux.&lt;br /&gt;
&lt;br /&gt;
A simple check is made to establish if the binaries exist at the given paths. A tick or a cross is displayed alongside each as a result. Note that this does not check that the application actually works, just that it is there.&lt;br /&gt;
&lt;br /&gt;
On a MacOS X, the path is &amp;quot;/usr/local/bin/&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Debugging TeX filter ===&lt;br /&gt;
&lt;br /&gt;
The TeX filter has a debugging script included that should help if you are having problems. The URL will be as follows...&lt;br /&gt;
&lt;br /&gt;
   http://your.moodle.path/filter/tex/texdebug.php&lt;br /&gt;
&lt;br /&gt;
You can either enter this path explicitly or with appropriate role permissions the TeX images (or more likely incorrectly rendered text, if you need debugging) will link to this. There are a number of options and suggestions to facilitate debugging the filter. Note that options for the latex/ghostscript versions are only provided from Moodle version 1.8.3.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mimetex on Debian based systems ===&lt;br /&gt;
&lt;br /&gt;
For some reason, the mimetex file that comes with Moodle doesn&#039;t work on Debian based systems (like Debian, Ubuntu, ...).&lt;br /&gt;
What works is installing Mimetex and Ghostscript on your server as Debian package (needs to be executed as root):&lt;br /&gt;
&lt;br /&gt;
 apt-get install tetex-extra mimetex gs&lt;br /&gt;
&lt;br /&gt;
Move your old mimetex file away&lt;br /&gt;
&lt;br /&gt;
 mv /var/www/moodle/filter/tex/mimetex.linux /var/www/moodle/filter/tex/mimetex.linux.old &lt;br /&gt;
&lt;br /&gt;
Make a symbolic link to the mimetex file, installed by the debian installer&lt;br /&gt;
&lt;br /&gt;
 ln -s /usr/bin/mimetex /var/www/moodle/filter/tex/mimetex.linux&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Filters]]&lt;br /&gt;
* [http://moodle.org/mod/glossary/view.php?id=2739&amp;amp;mode=letter&amp;amp;hook=M&amp;amp;sortkey=CREATION&amp;amp;sortorder=asc  TeX Filter Glossary] - a [[Glossary|glossary]] you can add to your course which details usage of the supported [[TeX notation]].&lt;br /&gt;
* [http://www.latex-project.org/ LaTeX] - the LaTeX document preparation system.&lt;br /&gt;
* [http://www.ghostscript.com/ ghostscript] - required to render the image&lt;br /&gt;
* [http://www.forkosh.com/mimetex.html mimetex] - generates mathematical expressions&lt;br /&gt;
* [http://www.miktex.org/ MikTeX] - LaTeX for Windows systems&lt;br /&gt;
&lt;br /&gt;
[[Category:Filter]]&lt;br /&gt;
[[Category:Mathematics]]&lt;/div&gt;</summary>
		<author><name>Moquist</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/32/en/index.php?title=Development:Czech_Hackfest_2009&amp;diff=63666</id>
		<title>Development:Czech Hackfest 2009</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/32/en/index.php?title=Development:Czech_Hackfest_2009&amp;diff=63666"/>
		<updated>2009-09-30T05:26:47Z</updated>

		<summary type="html">&lt;p&gt;Moquist: /* Attendees and arrivals */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Work in progress here - do not rely on this yet.&lt;br /&gt;
&lt;br /&gt;
== Programme ==&lt;br /&gt;
&lt;br /&gt;
; Saturday 5th December 2009 :&lt;br /&gt;
&lt;br /&gt;
* Meet each others in Prague (some arrive, some may be there already)&lt;br /&gt;
* Settle down in a hotel - probably [http://www.andelshotel.com] or [http://www.angelohotel.com] (we are discussing with them to get some sale, do not book anything yet).&lt;br /&gt;
* Explore Prague (Castle etc)&lt;br /&gt;
* Social beer event&lt;br /&gt;
&lt;br /&gt;
; Sunday 6th December 2009 :&lt;br /&gt;
* Leaving Prague together by a rented micro-bus (about 120 mins)&lt;br /&gt;
* Lunch at [http://www.jested.cz Jested, Liberec].&lt;br /&gt;
* Moving to the mountains (by bus or car or foot ;-), according to snow conditions)&lt;br /&gt;
* Accommodating at [http://www.dudovi.cz/jizerka/eng/ubytovani.htm Jizerka]&lt;br /&gt;
&lt;br /&gt;
; Monday 7th December 2009&lt;br /&gt;
* Moodle 2.0 release planning&lt;br /&gt;
* Triage of remaining bugs (assign developers, priorities)&lt;br /&gt;
* Bug sprint&lt;br /&gt;
&lt;br /&gt;
; Tuesday 8th December 2009&lt;br /&gt;
* Moodle 2.x planning&lt;br /&gt;
* Creating detailed roadmap for all modules based on tracker&lt;br /&gt;
&lt;br /&gt;
; Wednesday 9th December 2009&lt;br /&gt;
* Moodle 3.0 brainstorming and planning&lt;br /&gt;
* Moodle 2.0 bugs&lt;br /&gt;
&lt;br /&gt;
; Thursday 10th December 2009&lt;br /&gt;
* Moodle 2.0 bugs&lt;br /&gt;
* Skiiing?&lt;br /&gt;
&lt;br /&gt;
; Friday 11th December 2009 &lt;br /&gt;
* moving back to Prague on Friday&lt;br /&gt;
* more Prague sightseeing&lt;br /&gt;
* Settle down in a hotel - probably again [http://www.andelshotel.com] or [http://www.angelohotel.com] (we are discussing with them to get some sale, do not book anything yet).&lt;br /&gt;
* official end of hackfest&lt;br /&gt;
&lt;br /&gt;
== Attendees and arrivals ==&lt;br /&gt;
&lt;br /&gt;
Maximum of 16 places, so far we have (in chaotic order):&lt;br /&gt;
&lt;br /&gt;
# Martin Dougiamas&lt;br /&gt;
# Eloy Lafuente&lt;br /&gt;
# Petr Skoda&lt;br /&gt;
# Tim Hunt&lt;br /&gt;
# Helen Foster&lt;br /&gt;
# Penny Leach&lt;br /&gt;
# Dan Poltawski&lt;br /&gt;
# David Mudrak&lt;br /&gt;
# Shane Elliott&lt;br /&gt;
# Chris Roy&lt;br /&gt;
# Brian King&lt;br /&gt;
# Daniele Cordella&lt;br /&gt;
# Mike Churchward&lt;br /&gt;
# Hubert Chathi&lt;br /&gt;
# Matt Oquist&lt;br /&gt;
# ?&lt;br /&gt;
&lt;br /&gt;
== Suggestions ==&lt;br /&gt;
&lt;br /&gt;
I wanted to add some ideas of things we could talk about, and for some reason I did not want to use the talk page so I am adding them here. These are just ideas. Take them or leave them.&lt;br /&gt;
&lt;br /&gt;
===What is the balance between Yack and Hack?===&lt;br /&gt;
&lt;br /&gt;
That is, how much time will we be talking, and how much time writing code on our laptops?--[[User:Tim Hunt|Tim Hunt]] 09:41, 8 August 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
===Planning specific bits of the post 2.0-roadmap===&lt;br /&gt;
&lt;br /&gt;
The main thing is that we keep talking about how recent released, especially 2.0, have had a lot of under the hood changes and that we really need to do some work on the actual activities themselves. I was wonder if if we should have a section of time allocated to what we consider the most important modules (or other things like the gradebook/filepicker/backup).&lt;br /&gt;
&lt;br /&gt;
In order to have meaningful discussion, I suggest that in advanced of the hackfest, each participant is assigned (or volunteers for) one of those bit. They are then expected to read every open bug and feature request for that component, and spend some time following the associated forum, and come up with a summary of what the most pressing issues there seem to be. Then at the hackfest they would lead that discussion section, kicking off by explaining to the rest of us what they learned during their research.&lt;br /&gt;
&lt;br /&gt;
Naturally, if we do this, I volunteer for the quiz and question bank. Of course, I already have a pretty good idea what is going on there. I guess this would probably be more work if people had to look at an area they had not thought about before, so that is not fair.--[[User:Tim Hunt|Tim Hunt]] ~10:00, 6 August 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
: +1. Naturally, I volunteer for Workshop, given that the Tim&#039;s last sentence applies for my case, too. --[[User:David Mudrak|David Mudrak]] 10:51, 7 August 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
===How about a work-on-2.0 day===&lt;br /&gt;
&lt;br /&gt;
The aim would be that by the end of the day, we have fixed as many of the Fix-for 2.0 bugs as possible, and also have reviewed all the ones that we cannot fix immediately, so we end up with a really good, triaged bug-list of what is left to be done. By the end of the day, all the bugs should be assigned to someone who feels confident they will be able to fix it.--[[User:Tim Hunt|Tim Hunt]] 09:41, 8 August 2009 (UTC) and Dan Poltawski. We discussed this at the GBBF last night.&lt;br /&gt;
&lt;br /&gt;
===&#039;Prepared&#039; Bug Squashing===&lt;br /&gt;
&lt;br /&gt;
Basically the same as the above suggestion, but I want to emphasise some preperation beforehand so that we can get to the real unsolved issues which would benefit with us all being in the same room and discussing solutions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With each bug we triage before the hackfest, we should try to:&lt;br /&gt;
* a) Link or close issues which have been fixed, or will be fixed by 2.0 (etc)&lt;br /&gt;
* b) Document unsolved issues which we need discussion or a plan to be fixed (&#039;&#039;&#039;this is most important for the hackfest itself&#039;&#039;&#039;)&lt;br /&gt;
* c) Document bugs which could be fixed with a little time (at the hackfest or later)&lt;br /&gt;
* d) Document bugs to pester someone else about ;-)&lt;br /&gt;
&lt;br /&gt;
Depending on how much time you can devote, I suggest trying these triaging views in order:&lt;br /&gt;
* 1) Reviewing all open bugs reported by yourself, starting oldest first.&lt;br /&gt;
* 2) Reviewing your assigned issues, starting with oldest first &lt;br /&gt;
* 3) Reviewing &#039;nobody&#039; or &#039;imported&#039; bugs starting with the oldest first.&lt;br /&gt;
etc..&lt;br /&gt;
&lt;br /&gt;
There is a lot of old cruft in the tracker. Many of the issues have or will be fixed soon, so we could do a lot by just looking at our own issues and setting the status/links appropiately. For all the others, some are just without a decided solution - these would be great ones to at least think about discussing. --[[User:Dan Poltawski|Dan Poltawski]] 17:28, 15 August 2009 (UTC)&lt;/div&gt;</summary>
		<author><name>Moquist</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/32/en/index.php?title=Development:Czech_Hackfest_2009&amp;diff=63036</id>
		<title>Development:Czech Hackfest 2009</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/32/en/index.php?title=Development:Czech_Hackfest_2009&amp;diff=63036"/>
		<updated>2009-09-15T18:06:49Z</updated>

		<summary type="html">&lt;p&gt;Moquist: /* Attendees and arrivals */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Work in progress here - do not rely on this yet.&lt;br /&gt;
&lt;br /&gt;
== Programme ==&lt;br /&gt;
&lt;br /&gt;
; Saturday 5th December 2009 :&lt;br /&gt;
&lt;br /&gt;
* Meet each others in Prague (some arrive, some may be there already)&lt;br /&gt;
* Settle down in a hotel - probably [http://www.andelshotel.com] or [http://www.angelohotel.com] (we are discussing with them to get some sale, do not book anything yet).&lt;br /&gt;
* Explore Prague (Castle etc)&lt;br /&gt;
* Social beer event&lt;br /&gt;
&lt;br /&gt;
; Sunday 6th December 2009 :&lt;br /&gt;
* Leaving Prague together by a rented micro-bus (about 120 mins)&lt;br /&gt;
* Lunch at [http://www.jested.cz Jested, Liberec].&lt;br /&gt;
* Moving to the mountains (by bus or car or foot ;-), according to snow conditions)&lt;br /&gt;
* Accommodating at [http://www.dudovi.cz/jizerka/eng/ubytovani.htm Jizerka]&lt;br /&gt;
&lt;br /&gt;
; Monday 7th December 2009&lt;br /&gt;
* Moodle 2.0 release planning&lt;br /&gt;
* Triage of remaining bugs (assign developers, priorities)&lt;br /&gt;
* Bug sprint&lt;br /&gt;
&lt;br /&gt;
; Tuesday 8th December 2009&lt;br /&gt;
* Moodle 2.x planning&lt;br /&gt;
* Creating detailed roadmap for all modules based on tracker&lt;br /&gt;
&lt;br /&gt;
; Wednesday 9th December 2009&lt;br /&gt;
* Moodle 3.0 brainstorming and planning&lt;br /&gt;
* Moodle 2.0 bugs&lt;br /&gt;
&lt;br /&gt;
; Thursday 10th December 2009&lt;br /&gt;
* Moodle 2.0 bugs&lt;br /&gt;
* Skiiing?&lt;br /&gt;
&lt;br /&gt;
; Friday 11th December 2009 &lt;br /&gt;
* moving back to Prague on Friday&lt;br /&gt;
* more Prague sightseeing&lt;br /&gt;
* Settle down in a hotel - probably again [http://www.andelshotel.com] or [http://www.angelohotel.com] (we are discussing with them to get some sale, do not book anything yet).&lt;br /&gt;
* official end of hackfest&lt;br /&gt;
&lt;br /&gt;
== Attendees and arrivals ==&lt;br /&gt;
&lt;br /&gt;
Maximum of 16 places, so far we have (in chaotic order):&lt;br /&gt;
&lt;br /&gt;
# Martin Dougiamas&lt;br /&gt;
# Eloy Lafuente&lt;br /&gt;
# Petr Skoda&lt;br /&gt;
# Tim Hunt&lt;br /&gt;
# Helen Foster&lt;br /&gt;
# Penny Leach&lt;br /&gt;
# Dan Poltawski&lt;br /&gt;
# David Mudrak&lt;br /&gt;
# Shane Elliott&lt;br /&gt;
# Chris Roy&lt;br /&gt;
# Brian King (TBC)&lt;br /&gt;
# Daniele Cordella (TBC)&lt;br /&gt;
# Mike Churchward (TBC)&lt;br /&gt;
# Hubert Chathi or Justin Filip  (TBC)&lt;br /&gt;
# Iñaki Arenaza (TBC)&lt;br /&gt;
# Matt Oquist (TBC)&lt;br /&gt;
&lt;br /&gt;
== Suggestions ==&lt;br /&gt;
&lt;br /&gt;
I wanted to add some ideas of things we could talk about, and for some reason I did not want to use the talk page so I am adding them here. These are just ideas. Take them or leave them.&lt;br /&gt;
&lt;br /&gt;
===What is the balance between Yack and Hack?===&lt;br /&gt;
&lt;br /&gt;
That is, how much time will we be talking, and how much time writing code on our laptops?--[[User:Tim Hunt|Tim Hunt]] 09:41, 8 August 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
===Planning specific bits of the post 2.0-roadmap===&lt;br /&gt;
&lt;br /&gt;
The main thing is that we keep talking about how recent released, especially 2.0, have had a lot of under the hood changes and that we really need to do some work on the actual activities themselves. I was wonder if if we should have a section of time allocated to what we consider the most important modules (or other things like the gradebook/filepicker/backup).&lt;br /&gt;
&lt;br /&gt;
In order to have meaningful discussion, I suggest that in advanced of the hackfest, each participant is assigned (or volunteers for) one of those bit. They are then expected to read every open bug and feature request for that component, and spend some time following the associated forum, and come up with a summary of what the most pressing issues there seem to be. Then at the hackfest they would lead that discussion section, kicking off by explaining to the rest of us what they learned during their research.&lt;br /&gt;
&lt;br /&gt;
Naturally, if we do this, I volunteer for the quiz and question bank. Of course, I already have a pretty good idea what is going on there. I guess this would probably be more work if people had to look at an area they had not thought about before, so that is not fair.--[[User:Tim Hunt|Tim Hunt]] ~10:00, 6 August 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
: +1. Naturally, I volunteer for Workshop, given that the Tim&#039;s last sentence applies for my case, too. --[[User:David Mudrak|David Mudrak]] 10:51, 7 August 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
===How about a work-on-2.0 day===&lt;br /&gt;
&lt;br /&gt;
The aim would be that by the end of the day, we have fixed as many of the Fix-for 2.0 bugs as possible, and also have reviewed all the ones that we cannot fix immediately, so we end up with a really good, triaged bug-list of what is left to be done. By the end of the day, all the bugs should be assigned to someone who feels confident they will be able to fix it.--[[User:Tim Hunt|Tim Hunt]] 09:41, 8 August 2009 (UTC) and Dan Poltawski. We discussed this at the GBBF last night.&lt;br /&gt;
&lt;br /&gt;
===&#039;Prepared&#039; Bug Squashing===&lt;br /&gt;
&lt;br /&gt;
Basically the same as the above suggestion, but I want to emphasise some preperation beforehand so that we can get to the real unsolved issues which would benefit with us all being in the same room and discussing solutions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With each bug we triage before the hackfest, we should try to:&lt;br /&gt;
* a) Link or close issues which have been fixed, or will be fixed by 2.0 (etc)&lt;br /&gt;
* b) Document unsolved issues which we need discussion or a plan to be fixed (&#039;&#039;&#039;this is most important for the hackfest itself&#039;&#039;&#039;)&lt;br /&gt;
* c) Document bugs which could be fixed with a little time (at the hackfest or later)&lt;br /&gt;
* d) Document bugs to pester someone else about ;-)&lt;br /&gt;
&lt;br /&gt;
Depending on how much time you can devote, I suggest trying these triaging views in order:&lt;br /&gt;
* 1) Reviewing all open bugs reported by yourself, starting oldest first.&lt;br /&gt;
* 2) Reviewing your assigned issues, starting with oldest first &lt;br /&gt;
* 3) Reviewing &#039;nobody&#039; or &#039;imported&#039; bugs starting with the oldest first.&lt;br /&gt;
etc..&lt;br /&gt;
&lt;br /&gt;
There is a lot of old cruft in the tracker. Many of the issues have or will be fixed soon, so we could do a lot by just looking at our own issues and setting the status/links appropiately. For all the others, some are just without a decided solution - these would be great ones to at least think about discussing. --[[User:Dan Poltawski|Dan Poltawski]] 17:28, 15 August 2009 (UTC)&lt;/div&gt;</summary>
		<author><name>Moquist</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/32/en/index.php?title=Development:SchoolTool_Integration&amp;diff=62959</id>
		<title>Development:SchoolTool Integration</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/32/en/index.php?title=Development:SchoolTool_Integration&amp;diff=62959"/>
		<updated>2009-09-12T21:12:27Z</updated>

		<summary type="html">&lt;p&gt;Moquist: /* Tasks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [http://schooltool.org SchoolTool] SIS project recently released version 1.0, and lots of people could benefit from a solid integration between Moodle and SchoolTool. This page is a work-in-progress specification for the first version of this integration.&lt;br /&gt;
&lt;br /&gt;
==Goal: Moodle-SchoolTool integration modeled on Moodle-Mahara integration.==&lt;br /&gt;
* SchoolTool-Mahara integration should require very little extra effort when this project is complete.&lt;br /&gt;
* SchoolTool+Moodle+Mahara will provide a complete, integrated school administration/learning/portfolio suite that will be easily installable and supportable by time-crunched education systems administrators.&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
* Completely web-based integration configuration (similar to Moodle-Mahara configuration)&lt;br /&gt;
* SSO between SchoolTool and Moodle&lt;br /&gt;
* User accounts, courses, enrolments, assignments, and grades auto-update in SchoolTool&lt;br /&gt;
* Automatic grade transfer from Moodle to SchoolTool&lt;br /&gt;
&lt;br /&gt;
==Integration v1.0 NON-Requirements==&lt;br /&gt;
* Users, courses, enrolments can originate in and be managed within SchoolTool, with Moodle updating from SchoolTool.&lt;br /&gt;
** This will be the goal of the next version of the integration.&lt;br /&gt;
&lt;br /&gt;
==Assumptions==&lt;br /&gt;
* SchoolTool is the authoritative reporting application.&lt;br /&gt;
* Moodle drives all data creation and management.&lt;br /&gt;
&lt;br /&gt;
==Supported versions==&lt;br /&gt;
* SchoolTool 1.0&lt;br /&gt;
* Moodle 1.9.5+&lt;br /&gt;
&lt;br /&gt;
==Terminology Disambiguation==&lt;br /&gt;
* course: A SchoolTool course.&lt;br /&gt;
** SchoolTool &amp;quot;course&amp;quot; has no Moodle analogue. (&amp;quot;Algebra 1&amp;quot;) can have multiple &amp;quot;sections&amp;quot; (&amp;quot;Algebra 1 @ 9:15 taught by Mr. Smith&amp;quot;).&lt;br /&gt;
* section: A SchoolTool section, a Moodle course.&lt;br /&gt;
&lt;br /&gt;
==Background info and references==&lt;br /&gt;
* [https://docs.moodle.org/en/Grades Moodle 1.9+ gradebook]&lt;br /&gt;
* [https://docs.moodle.org/en/External_database Moodle external DB enrolment plugin ]&lt;br /&gt;
&lt;br /&gt;
==Implementation notes/ideas==&lt;br /&gt;
* The [http://git.catalyst.net.nz/mnet.git/ PHP mnet library] has been [https://code.edge.launchpad.net/~mnet-maintainers/mnet-wsgi/main ported to python.]&lt;br /&gt;
** SchoolTool will need to use this library.&lt;br /&gt;
* Moodle will need some awareness of SchoolTool in the mnet auth plugin. Not sure yet what this entails. (i.e., Mahara shows up in the list. We need SchoolTool in there, too.)&lt;br /&gt;
* Moodle will need an enrolment plugin that gets data from mnet but is otherwise modeled on the external DB enrolment plugin.&lt;br /&gt;
* Moodle will need a gradebook plugin that can pass grades to SchoolTool via mnet.&lt;br /&gt;
* integration v1.0 will not batch updates from Moodle to SchoolTool. Updates will be small and frequent.&lt;br /&gt;
&lt;br /&gt;
==Use Cases==&lt;br /&gt;
* integration v1.0: Drop SchoolTool into existing Moodle site, leave Moodle as driver of user directory and enrollment management.&lt;br /&gt;
** Accounts manually created in SchoolTool may or may not be integratable with Moodle. (Matt recommends this as a feature, but it should not be required for v1.0.)&lt;br /&gt;
** All course creation and enrollment updates must happen first in Moodle and be transferred from there to SchoolTool.&lt;br /&gt;
** Enrollment can be student-driven.&lt;br /&gt;
** An interactive enrollment in Moodle kicks off an immediate transaction to record the enrollment in schooltool.&lt;br /&gt;
* future integration version only: Drop SchoolTool into existing Moodle site, after bulk data transfer from Moodle-&amp;gt;SchoolTool, flip configuration and use SchoolTool as the authoritative user directory and/or enrollment management system.&lt;br /&gt;
** Could this be used to migrate to SchoolTool from another SIS (integrated somehow with Moodle) by way of Moodle?&lt;br /&gt;
* Start fresh with both.&lt;br /&gt;
* future integration version only: Drop Moodle into SchoolTool site.&lt;br /&gt;
** maybe not important for v1.0, might basically come for free&lt;br /&gt;
* future integration version only: Drop SchoolTool into Mahara site (and vice-versa)&lt;br /&gt;
&#039;&#039;&#039;In summary, integration v1.0 will be a Moodle-&amp;gt;SchoolTool integration. We are laying a foundation for a future bidirectional integration in which sections are created and teachers and enrollments are managed in SchoolTool, while Moodle regularly reports grades back to SchoolTool.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==User Interfaces==&lt;br /&gt;
* The integration configuration interfaces will be modeled on the existing interfaces for integrating Moodle and Mahara. See this document for a characterization of the type of admin user experience we want: [http://eduforge.org/docman/view.php/176/3200/Mahoodle.pdf Mahoodle.pdf]&lt;br /&gt;
* Moodle UIs&lt;br /&gt;
** Auth plugin config&lt;br /&gt;
** Enrolment plugin config&lt;br /&gt;
** Grade export config&lt;br /&gt;
* SchoolTool UIs&lt;br /&gt;
** similar division of config screens&lt;br /&gt;
** equivalent of Moodle&#039;s &amp;quot;Network Servers&amp;quot; block with links to SSO peers&lt;br /&gt;
** equivalent of &amp;quot;You have logged in from &amp;lt;somelink&amp;gt;&amp;quot; to go back after SSO&lt;br /&gt;
&lt;br /&gt;
==Mnet==&lt;br /&gt;
* What, in summary, does MNET provide?&lt;br /&gt;
** MNET is an XMLRPC implementation that dispatches messages to applications on either side (with a convention for function naming).&lt;br /&gt;
** MNET has a security layer that enforces that every message is encrypted and signed (with regular key rotation).&lt;br /&gt;
** MNET provides a core set of modules to provide common functionality such as SSO, key discovery, ping, and course enrollment.&lt;br /&gt;
&lt;br /&gt;
===Moodle mnet Interfaces===&lt;br /&gt;
* existing: SSO IDP interfaces&lt;br /&gt;
** in integration v1.0, SchoolTool will only be a Service Provider and Moodle will always be the IDentity Provider&lt;br /&gt;
** returns user data sufficient to create account&lt;br /&gt;
* list_user_enrolments(user)&lt;br /&gt;
** returns a list of all enrolments for a given user&lt;br /&gt;
** SchoolTool may call this to get enrolment data ASAP when an unknown user authenticates and an account is created using user_authorise()&lt;br /&gt;
&lt;br /&gt;
===SchoolTool mnet Interfaces===&lt;br /&gt;
* fetch_user(userdata)&lt;br /&gt;
** tell SchoolTool to ask Moodle for one user&#039;s data&lt;br /&gt;
** userdata: associative array such as:&lt;br /&gt;
*** username=&amp;gt;moquist&lt;br /&gt;
*** firstname=&amp;gt;Matt&lt;br /&gt;
*** lastname=&amp;gt;Oquist&lt;br /&gt;
*** idnumber=&amp;gt;1234457 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** email=&amp;gt;moquist@majen.net&lt;br /&gt;
*** password_hash=&amp;gt;234lih23rlh2asldfjas&lt;br /&gt;
*** password_hash_algorithm=&amp;gt;md5&lt;br /&gt;
*** ircnick=&amp;gt;moquist&lt;br /&gt;
*** arbitrary_field=&amp;gt;arbitrary_data_string...&lt;br /&gt;
**** SchoolTool only cares about enough to create a login account.&lt;br /&gt;
**** SchoolTool does not care about student-editable profile fields.&lt;br /&gt;
* new_section(sectiondata)&lt;br /&gt;
** sectiondata: associative array such as:&lt;br /&gt;
*** name=&amp;gt;&amp;quot;Algebra 1 V1 Mrs. Smith: Cats and their Affectations&amp;quot;&lt;br /&gt;
*** idnumber=&amp;gt;197423 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** teacheridnumber=&amp;gt;987234 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** segment=&amp;gt;1 # a section may have more than one semester/segment/term(?)&lt;br /&gt;
* new_enrolment(enrolmentdata)&lt;br /&gt;
** create new association between user &amp;amp; section&lt;br /&gt;
** enrolmentdata: associative array such as:&lt;br /&gt;
*** sectionid=&amp;gt;197423 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** userid=&amp;gt;987234 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** role=&amp;gt;&#039;teacher&#039; # only &#039;student&#039; and &#039;teacher&#039; supported in integration v1.0&lt;br /&gt;
* new_assessment(assessmentdata)&lt;br /&gt;
** create new assessment to be displayed in grade reports&lt;br /&gt;
** assessmentdata: associative array such as:&lt;br /&gt;
*** sectionid=&amp;gt;197423 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** name=&amp;gt;&amp;quot;How to grill a logarithmic sandwich&amp;quot;&lt;br /&gt;
*** idnumber=&amp;gt;73743734 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** chapternum=&amp;gt;3&lt;br /&gt;
*** honors_required=&amp;gt;false&lt;br /&gt;
*** nonhonors_required=&amp;gt;true&lt;br /&gt;
*** extra_credit=&amp;gt;false&lt;br /&gt;
*** pointval=&amp;gt;68&lt;br /&gt;
* new_grade(gradedata)&lt;br /&gt;
** make entry in gradebook&lt;br /&gt;
** gradedata: associative array such as:&lt;br /&gt;
*** assessmentid=&amp;gt;73743734&lt;br /&gt;
*** userid=&amp;gt;2347234 # unique shared ID of student&lt;br /&gt;
*** points_earned=&amp;gt;62&lt;br /&gt;
*** excepted=&amp;gt;false&lt;br /&gt;
*** attempt_num=&amp;gt;1 # if multiple attempts are allowed&lt;br /&gt;
&lt;br /&gt;
==Phase 2==&lt;br /&gt;
* Some discussion is taking place [http://moodle.org/mod/forum/discuss.php?d=129267 here].&lt;br /&gt;
===Scenarios===&lt;br /&gt;
# Susie Sunglasses will return to Town High School for her senior year. During the last week of school in her junior year, she sits down in the computer lab, logs into Moodle, and enrolls herself in each of the 5 courses she wishes to take during the fall semester. Moodle sends information about these enrollments to SchoolTool, and when THS principal Patricia Participle logs in to SchoolTool in July she is able to see which courses Susie will be taking in the fall.&lt;br /&gt;
#:[https://docs.moodle.org/en/images_en/d/d1/Susie-and-patricia.dia Susie-and-patricia.dia source file]&lt;br /&gt;
#:[[Image:Susie-and-patricia.png|300px]] [[Image:Patricia-checks-Susies-courses-in-SchoolTool.png|100px]] &lt;br /&gt;
# Tommy Trackstar is a new student at Town High School. He consults immediately with guidance counselor Guinevere, who logs into Moodle and enrolls him in all his chosen courses. As Tommy completes his work and grades are given (some automatically and some manually by the teacher) in Moodle, each grade is also transferred to SchoolTool, which is thereby able to generate an up-to-date progress report for Tommy at any desired point in time (past or present).&lt;br /&gt;
#:[https://docs.moodle.org/en/images_en/a/af/Tommy-and-guinevere1.dia Tommy-and-guinevere1.dia source file]&lt;br /&gt;
#:[[Image:Tommy-and-guinevere1.png|500px]] [[Image:Scenario2.png|200px]] &lt;br /&gt;
# Track season comes around, and Tommy gets too busy with practice. After careful consideration of all his available options, Tommy decides to drop Mathematics of Whistling to have an extra hour to run each day. Either he or guidance counselor Guinevere unenrolls him in Moodle from Mathematics of Whistling. The unenrollment is transferred directly to SchoolTool, and Guinevere is able to enter a note and a withdrawal code to explain what happened. This withdrawal is then included on Tommy&#039;s transcript.&lt;br /&gt;
#:[https://docs.moodle.org/en/images_en/2/2b/Tommy-and-guinevere2.dia Tommy-and-guinevere2.dia source file]&lt;br /&gt;
#:[[Image:Tommy-and-guinevere2.png|500px]]&lt;br /&gt;
# Samantha Stupenda, widely rumored to be the most demanding science teacher at THS, has developed assignments for the newest chapter of the textbook she&#039;s writing (&amp;quot;Earth Science Internalized: No Escape&amp;quot;). Samantha adds each of these assignments to her course in Moodle. As she adds each assignment, it is transferred to SchoolTool as a grade item for the section, and SchoolTool will be prepared to accept grade data for each student enrolled in Samantha&#039;s course.&lt;br /&gt;
#:[https://docs.moodle.org/en/images_en/5/56/Samantha1.dia Samantha1.dia source file]&lt;br /&gt;
#:[[Image:Samantha1.png|500px]]&lt;br /&gt;
# Vera Vestibule is taking Bubble Blowing 101, which has no Moodle component at all. Guidance counselor Guinevere logs into SchoolTool and 1) creates a course (&amp;quot;Bubble Blowing 101&amp;quot;), 2) creates a section of the course (&amp;quot;Bubble Blowing 101 taught by Chewie Chomper&amp;quot;), and 3) enrolls Vera in the section. Chewie uploads in SchoolTool a spreadsheet specifying the gradeable assignments in the course. As his students complete the assignments, Chewie enters their grades in SchoolTool, which is then able to include this course and these grades in student progress reports and transcripts.&lt;br /&gt;
#:[https://docs.moodle.org/en/images_en/d/d1/Vera.dia Vera.dia source file]&lt;br /&gt;
#:[[Image:Vera.png|300px]]&lt;br /&gt;
# Samantha Stupenda also teaches Chemistry. All her class assignments are graded in Moodle, and those grades transfer automatically to SchoolTool. But her lab assignments are not in Moodle, and Samantha creates grade items and enters those grades manually into her Chemistry sections in SchoolTool. Halfway through the school year, Samantha decides to represent those lab assignments in Moodle, and she is careful to use *exactly* the same names that she entered into SchoolTool previously. These assignments become integrated with SchoolTool, and grades begin transferring automatically from Moodle to SchoolTool. Grades previously entered manually into SchoolTool are unaffected.&lt;br /&gt;
# Country Mouse High School has been using Moodle for the past 3 years, and many but not all of the teachers have enthusiastically created Moodle courses that they use extensively in their classrooms. However, some teachers do not have a Moodle presence at all. The principal of CMHS, Betsy Balustrade, keeps a collection of spreadsheets and other documents which she uses to plan and manage the class schedule each year. The technology director of CMHS, Cathy Colever, decides to adopt SchoolTool as the Student Information System (SIS) of CMHS. She installs SchoolTool and integrates it with their existing Moodle, and all the information in Moodle about the teachers, students, courses, enrollments, and grades is transferred to SchoolTool. Cathy provides a series of training sessions for Betsy and her administrative assistant Astra Lodge. Since not every course in the school is in Moodle, Astra enters information about some courses, teachers, and student enrollments into SchoolTool manually. After that, Betsy is able to use SchoolTool to create the schedule for each upcoming semester.&lt;br /&gt;
#:[https://docs.moodle.org/en/images_en/d/d1/Country-mouse.dia Country-mouse.dia source file]&lt;br /&gt;
## Phase 2 Part 1: Users&lt;br /&gt;
##:[[Image:Country-mouse1.png|300px]]&lt;br /&gt;
## Phase 2 Part 2: Enrollments&lt;br /&gt;
##:[[Image:Country-mouse2.png|300px]]&lt;br /&gt;
## Phase 2 Part 3: Grades&lt;br /&gt;
##:[[Image:Country-mouse3.png|300px]]&lt;br /&gt;
&lt;br /&gt;
===Flowcharts Because We Like Them===&lt;br /&gt;
* address each of the above scenarios...&lt;br /&gt;
* show technical detail for transfer of user account(s) from Moodle to SchoolTool&lt;br /&gt;
:[[Image:SchoolTool_Integration_Userdata.dia]]&lt;br /&gt;
:[[Image:SchoolTool_Integration_Userdata.png|200px]]&lt;br /&gt;
* show technical detail for transfer of enrollment(s) from Moodle to SchoolTool&lt;br /&gt;
:[[Image:SchoolTool_Integration_Enrollment.dia]]&lt;br /&gt;
:[[Image:SchoolTool_Integration_Enrollment.png|200px]]&lt;br /&gt;
* show technical detail for transfer of grades(s) from Moodle to SchoolTool&lt;br /&gt;
:[[Image:SchoolTool_Integration_Grades.dia]]&lt;br /&gt;
:[[Image:SchoolTool_Integration_Grades.png|200px]]&lt;br /&gt;
&lt;br /&gt;
===Part 1: SSO===&lt;br /&gt;
When this is done, we should have much of the functionality that Moodle+Mahara currently offers. In particular, there should be a completely Web-based configuration to integrate Moodle with SchoolTool, and the result should be that all Moodle users suddenly have SchoolTool accounts as well.&lt;br /&gt;
====Tasks====&lt;br /&gt;
* Moodle MNet linkage (Matt)&lt;br /&gt;
** UI: Make Moodle aware of SchoolTool as a potential SSO peer.&lt;br /&gt;
** Add new auth plugin to send info to SchoolTool and to accept SSO back from SchoolTool.&lt;br /&gt;
** Create spec for Brett to implement inward and outward portion of SSO in SchoolTool. Needs to answer the following questions:&lt;br /&gt;
*** What URL will Moodle call when attempting to initiate outbound SSO?&lt;br /&gt;
*** How will Moodle provide the authentication token to the remote system?&lt;br /&gt;
*** What URL does Moodle expect to be called with to accept incoming SSO?&lt;br /&gt;
*** How does Moodle expect to be given the authentication token?&lt;br /&gt;
* Fully implemented MNet linkage and SSO between Moodle and SchoolTool (Brett)&lt;br /&gt;
** Ability to configure one or more Moodle systems as MNet peers within SchoolTool&lt;br /&gt;
*** Add new peer&lt;br /&gt;
*** View / verify peer status&lt;br /&gt;
*** Delete peer&lt;br /&gt;
** After configuration, ability to perform SSO login from SchoolTool to Moodle&lt;br /&gt;
** After configuration, ability to accept SSO login from Moodle to SchoolTool&lt;br /&gt;
*** Authorization to log in will be determined by SchoolTool. To prevent unwanted student logins, the default is that imported user accounts will not have login rights unless changed manually in SchoolTool&lt;br /&gt;
** Unit tests to cover each of the above features&lt;br /&gt;
* SchoolTool back-end (Douglas)&lt;br /&gt;
** Accept new user info from any integrated Moodle that calls.&lt;br /&gt;
*** Handle username collisions. (See Mahara &amp;amp; Moodle.)&lt;br /&gt;
*** Consider how user profile fields are handled.&lt;br /&gt;
*** Remember that the client does not want Students to be able to log in. How will these logins be prevented? (See related note above in UI section.)&lt;br /&gt;
** Periodically ask for a full-sync with each integrated Moodle.&lt;br /&gt;
&lt;br /&gt;
===Part 2: Enrollments===&lt;br /&gt;
====Tasks====&lt;br /&gt;
===Part 3: Grades===&lt;br /&gt;
====Tasks====&lt;br /&gt;
&lt;br /&gt;
==Misc. TODO==&lt;br /&gt;
* Matt/Tom: Find out what reports ECHS will want from SchoolTool&lt;br /&gt;
&lt;br /&gt;
* SchoolTool TODO list&lt;br /&gt;
** Create an &amp;quot;ongoing section&amp;quot; container that will contain (otherwise normal) sections that do not fit into the year/term schema.&lt;br /&gt;
*** integration v1.0 will place all Moodle-driven sections in the &amp;quot;ongoing&amp;quot; container&lt;br /&gt;
** Add enumerated status field to enrollment (e.g., Active, Withdrawn No Grade, Withdrawn Failing, Passed) This will not initially include a workflow, but simply a current state and a history of states.&lt;br /&gt;
** Add support for section history&lt;br /&gt;
*** grading history&lt;br /&gt;
*** enrollment history (including all enrollment status changes)&lt;br /&gt;
*** teacher history&lt;/div&gt;</summary>
		<author><name>Moquist</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/32/en/index.php?title=Development:SchoolTool_Integration&amp;diff=62511</id>
		<title>Development:SchoolTool Integration</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/32/en/index.php?title=Development:SchoolTool_Integration&amp;diff=62511"/>
		<updated>2009-09-04T16:34:09Z</updated>

		<summary type="html">&lt;p&gt;Moquist: /* Scenarios */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [http://schooltool.org SchoolTool] SIS project recently released version 1.0, and lots of people could benefit from a solid integration between Moodle and SchoolTool. This page is a work-in-progress specification for the first version of this integration.&lt;br /&gt;
&lt;br /&gt;
==Goal: Moodle-SchoolTool integration modeled on Moodle-Mahara integration.==&lt;br /&gt;
* SchoolTool-Mahara integration should require very little extra effort when this project is complete.&lt;br /&gt;
* SchoolTool+Moodle+Mahara will provide a complete, integrated school administration/learning/portfolio suite that will be easily installable and supportable by time-crunched education systems administrators.&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
* Completely web-based integration configuration (similar to Moodle-Mahara configuration)&lt;br /&gt;
* SSO between SchoolTool and Moodle&lt;br /&gt;
* User accounts, courses, enrolments, assignments, and grades auto-update in SchoolTool&lt;br /&gt;
* Automatic grade transfer from Moodle to SchoolTool&lt;br /&gt;
&lt;br /&gt;
==Integration v1.0 NON-Requirements==&lt;br /&gt;
* Users, courses, enrolments can originate in and be managed within SchoolTool, with Moodle updating from SchoolTool.&lt;br /&gt;
** This will be the goal of the next version of the integration.&lt;br /&gt;
&lt;br /&gt;
==Assumptions==&lt;br /&gt;
* SchoolTool is the authoritative reporting application.&lt;br /&gt;
* Moodle drives all data creation and management.&lt;br /&gt;
&lt;br /&gt;
==Supported versions==&lt;br /&gt;
* SchoolTool 1.0&lt;br /&gt;
* Moodle 1.9.5+&lt;br /&gt;
&lt;br /&gt;
==Terminology Disambiguation==&lt;br /&gt;
* course: A SchoolTool course.&lt;br /&gt;
** SchoolTool &amp;quot;course&amp;quot; has no Moodle analogue. (&amp;quot;Algebra 1&amp;quot;) can have multiple &amp;quot;sections&amp;quot; (&amp;quot;Algebra 1 @ 9:15 taught by Mr. Smith&amp;quot;).&lt;br /&gt;
* section: A SchoolTool section, a Moodle course.&lt;br /&gt;
&lt;br /&gt;
==Background info and references==&lt;br /&gt;
* [https://docs.moodle.org/en/Grades Moodle 1.9+ gradebook]&lt;br /&gt;
* [https://docs.moodle.org/en/External_database Moodle external DB enrolment plugin ]&lt;br /&gt;
&lt;br /&gt;
==Implementation notes/ideas==&lt;br /&gt;
* The [http://git.catalyst.net.nz/mnet.git/ PHP mnet library] has been [https://code.edge.launchpad.net/~mnet-maintainers/mnet-wsgi/main ported to python.]&lt;br /&gt;
** SchoolTool will need to use this library.&lt;br /&gt;
* Moodle will need some awareness of SchoolTool in the mnet auth plugin. Not sure yet what this entails. (i.e., Mahara shows up in the list. We need SchoolTool in there, too.)&lt;br /&gt;
* Moodle will need an enrolment plugin that gets data from mnet but is otherwise modeled on the external DB enrolment plugin.&lt;br /&gt;
* Moodle will need a gradebook plugin that can pass grades to SchoolTool via mnet.&lt;br /&gt;
* integration v1.0 will not batch updates from Moodle to SchoolTool. Updates will be small and frequent.&lt;br /&gt;
&lt;br /&gt;
==Use Cases==&lt;br /&gt;
* integration v1.0: Drop SchoolTool into existing Moodle site, leave Moodle as driver of user directory and enrollment management.&lt;br /&gt;
** Accounts manually created in SchoolTool may or may not be integratable with Moodle. (Matt recommends this as a feature, but it should not be required for v1.0.)&lt;br /&gt;
** All course creation and enrollment updates must happen first in Moodle and be transferred from there to SchoolTool.&lt;br /&gt;
** Enrollment can be student-driven.&lt;br /&gt;
** An interactive enrollment in Moodle kicks off an immediate transaction to record the enrollment in schooltool.&lt;br /&gt;
* future integration version only: Drop SchoolTool into existing Moodle site, after bulk data transfer from Moodle-&amp;gt;SchoolTool, flip configuration and use SchoolTool as the authoritative user directory and/or enrollment management system.&lt;br /&gt;
** Could this be used to migrate to SchoolTool from another SIS (integrated somehow with Moodle) by way of Moodle?&lt;br /&gt;
* Start fresh with both.&lt;br /&gt;
* future integration version only: Drop Moodle into SchoolTool site.&lt;br /&gt;
** maybe not important for v1.0, might basically come for free&lt;br /&gt;
* future integration version only: Drop SchoolTool into Mahara site (and vice-versa)&lt;br /&gt;
&#039;&#039;&#039;In summary, integration v1.0 will be a Moodle-&amp;gt;SchoolTool integration. We are laying a foundation for a future bidirectional integration in which sections are created and teachers and enrollments are managed in SchoolTool, while Moodle regularly reports grades back to SchoolTool.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==User Interfaces==&lt;br /&gt;
* The integration configuration interfaces will be modeled on the existing interfaces for integrating Moodle and Mahara. See this document for a characterization of the type of admin user experience we want: [http://eduforge.org/docman/view.php/176/3200/Mahoodle.pdf Mahoodle.pdf]&lt;br /&gt;
* Moodle UIs&lt;br /&gt;
** Auth plugin config&lt;br /&gt;
** Enrolment plugin config&lt;br /&gt;
** Grade export config&lt;br /&gt;
* SchoolTool UIs&lt;br /&gt;
** similar division of config screens&lt;br /&gt;
** equivalent of Moodle&#039;s &amp;quot;Network Servers&amp;quot; block with links to SSO peers&lt;br /&gt;
** equivalent of &amp;quot;You have logged in from &amp;lt;somelink&amp;gt;&amp;quot; to go back after SSO&lt;br /&gt;
&lt;br /&gt;
==Mnet==&lt;br /&gt;
* What, in summary, does MNET provide?&lt;br /&gt;
** MNET is an XMLRPC implementation that dispatches messages to applications on either side (with a convention for function naming).&lt;br /&gt;
** MNET has a security layer that enforces that every message is encrypted and signed (with regular key rotation).&lt;br /&gt;
** MNET provides a core set of modules to provide common functionality such as SSO, key discovery, ping, and course enrollment.&lt;br /&gt;
&lt;br /&gt;
===Moodle mnet Interfaces===&lt;br /&gt;
* existing: SSO IDP interfaces&lt;br /&gt;
** in integration v1.0, SchoolTool will only be a Service Provider and Moodle will always be the IDentity Provider&lt;br /&gt;
** returns user data sufficient to create account&lt;br /&gt;
* list_user_enrolments(user)&lt;br /&gt;
** returns a list of all enrolments for a given user&lt;br /&gt;
** SchoolTool may call this to get enrolment data ASAP when an unknown user authenticates and an account is created using user_authorise()&lt;br /&gt;
&lt;br /&gt;
===SchoolTool mnet Interfaces===&lt;br /&gt;
* fetch_user(userdata)&lt;br /&gt;
** tell SchoolTool to ask Moodle for one user&#039;s data&lt;br /&gt;
** userdata: associative array such as:&lt;br /&gt;
*** username=&amp;gt;moquist&lt;br /&gt;
*** firstname=&amp;gt;Matt&lt;br /&gt;
*** lastname=&amp;gt;Oquist&lt;br /&gt;
*** idnumber=&amp;gt;1234457 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** email=&amp;gt;moquist@majen.net&lt;br /&gt;
*** password_hash=&amp;gt;234lih23rlh2asldfjas&lt;br /&gt;
*** password_hash_algorithm=&amp;gt;md5&lt;br /&gt;
*** ircnick=&amp;gt;moquist&lt;br /&gt;
*** arbitrary_field=&amp;gt;arbitrary_data_string...&lt;br /&gt;
**** SchoolTool only cares about enough to create a login account.&lt;br /&gt;
**** SchoolTool does not care about student-editable profile fields.&lt;br /&gt;
* new_section(sectiondata)&lt;br /&gt;
** sectiondata: associative array such as:&lt;br /&gt;
*** name=&amp;gt;&amp;quot;Algebra 1 V1 Mrs. Smith: Cats and their Affectations&amp;quot;&lt;br /&gt;
*** idnumber=&amp;gt;197423 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** teacheridnumber=&amp;gt;987234 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** segment=&amp;gt;1 # a section may have more than one semester/segment/term(?)&lt;br /&gt;
* new_enrolment(enrolmentdata)&lt;br /&gt;
** create new association between user &amp;amp; section&lt;br /&gt;
** enrolmentdata: associative array such as:&lt;br /&gt;
*** sectionid=&amp;gt;197423 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** userid=&amp;gt;987234 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** role=&amp;gt;&#039;teacher&#039; # only &#039;student&#039; and &#039;teacher&#039; supported in integration v1.0&lt;br /&gt;
* new_assessment(assessmentdata)&lt;br /&gt;
** create new assessment to be displayed in grade reports&lt;br /&gt;
** assessmentdata: associative array such as:&lt;br /&gt;
*** sectionid=&amp;gt;197423 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** name=&amp;gt;&amp;quot;How to grill a logarithmic sandwich&amp;quot;&lt;br /&gt;
*** idnumber=&amp;gt;73743734 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** chapternum=&amp;gt;3&lt;br /&gt;
*** honors_required=&amp;gt;false&lt;br /&gt;
*** nonhonors_required=&amp;gt;true&lt;br /&gt;
*** extra_credit=&amp;gt;false&lt;br /&gt;
*** pointval=&amp;gt;68&lt;br /&gt;
* new_grade(gradedata)&lt;br /&gt;
** make entry in gradebook&lt;br /&gt;
** gradedata: associative array such as:&lt;br /&gt;
*** assessmentid=&amp;gt;73743734&lt;br /&gt;
*** userid=&amp;gt;2347234 # unique shared ID of student&lt;br /&gt;
*** points_earned=&amp;gt;62&lt;br /&gt;
*** excepted=&amp;gt;false&lt;br /&gt;
*** attempt_num=&amp;gt;1 # if multiple attempts are allowed&lt;br /&gt;
&lt;br /&gt;
==Phase 2==&lt;br /&gt;
* Some discussion is taking place [http://moodle.org/mod/forum/discuss.php?d=129267 here].&lt;br /&gt;
===Scenarios===&lt;br /&gt;
# Susie Sunglasses will return to Town High School for her senior year. During the last week of school in her junior year, she sits down in the computer lab, logs into Moodle, and enrolls herself in each of the 5 courses she wishes to take during the fall semester. Moodle sends information about these enrollments to SchoolTool, and when THS principal Patricia Participle logs in to SchoolTool in July she is able to see which courses Susie will be taking in the fall.&lt;br /&gt;
#:[https://docs.moodle.org/en/images_en/d/d1/Susie-and-patricia.dia Susie-and-patricia.dia source file]&lt;br /&gt;
#:[[Image:Susie-and-patricia.png|300px]] [[Image:Patricia-checks-Susies-courses-in-SchoolTool.png|100px]] &lt;br /&gt;
# Tommy Trackstar is a new student at Town High School. He consults immediately with guidance counselor Guinevere, who logs into Moodle and enrolls him in all his chosen courses. As Tommy completes his work and grades are given (some automatically and some manually by the teacher) in Moodle, each grade is also transferred to SchoolTool, which is thereby able to generate an up-to-date progress report for Tommy at any desired point in time (past or present).&lt;br /&gt;
#:[https://docs.moodle.org/en/images_en/a/af/Tommy-and-guinevere1.dia Tommy-and-guinevere1.dia source file]&lt;br /&gt;
#:[[Image:Tommy-and-guinevere1.png|500px]] [[Image:Scenario2.png|200px]] &lt;br /&gt;
# Track season comes around, and Tommy gets too busy with practice. After careful consideration of all his available options, Tommy decides to drop Mathematics of Whistling to have an extra hour to run each day. Either he or guidance counselor Guinevere unenrolls him in Moodle from Mathematics of Whistling. The unenrollment is transferred directly to SchoolTool, and Guinevere is able to enter a note and a withdrawal code to explain what happened. This withdrawal is then included on Tommy&#039;s transcript.&lt;br /&gt;
#:[https://docs.moodle.org/en/images_en/2/2b/Tommy-and-guinevere2.dia Tommy-and-guinevere2.dia source file]&lt;br /&gt;
#:[[Image:Tommy-and-guinevere2.png|500px]]&lt;br /&gt;
# Samantha Stupenda, widely rumored to be the most demanding science teacher at THS, has developed assignments for the newest chapter of the textbook she&#039;s writing (&amp;quot;Earth Science Internalized: No Escape&amp;quot;). Samantha adds each of these assignments to her course in Moodle. As she adds each assignment, it is transferred to SchoolTool as a grade item for the section, and SchoolTool will be prepared to accept grade data for each student enrolled in Samantha&#039;s course.&lt;br /&gt;
#:[https://docs.moodle.org/en/images_en/5/56/Samantha1.dia Samantha1.dia source file]&lt;br /&gt;
#:[[Image:Samantha1.png|500px]]&lt;br /&gt;
# Vera Vestibule is taking Bubble Blowing 101, which has no Moodle component at all. Guidance counselor Guinevere logs into SchoolTool and 1) creates a course (&amp;quot;Bubble Blowing 101&amp;quot;), 2) creates a section of the course (&amp;quot;Bubble Blowing 101 taught by Chewie Chomper&amp;quot;), and 3) enrolls Vera in the section. Chewie uploads in SchoolTool a spreadsheet specifying the gradeable assignments in the course. As his students complete the assignments, Chewie enters their grades in SchoolTool, which is then able to include this course and these grades in student progress reports and transcripts.&lt;br /&gt;
#:[https://docs.moodle.org/en/images_en/d/d1/Vera.dia Vera.dia source file]&lt;br /&gt;
#:[[Image:Vera.png|300px]]&lt;br /&gt;
# Samantha Stupenda also teaches Chemistry. All her class assignments are graded in Moodle, and those grades transfer automatically to SchoolTool. But her lab assignments are not in Moodle, and Samantha creates grade items and enters those grades manually into her Chemistry sections in SchoolTool. Halfway through the school year, Samantha decides to represent those lab assignments in Moodle, and she is careful to use *exactly* the same names that she entered into SchoolTool previously. These assignments become integrated with SchoolTool, and grades begin transferring automatically from Moodle to SchoolTool. Grades previously entered manually into SchoolTool are unaffected.&lt;br /&gt;
# Country Mouse High School has been using Moodle for the past 3 years, and many but not all of the teachers have enthusiastically created Moodle courses that they use extensively in their classrooms. However, some teachers do not have a Moodle presence at all. The principal of CMHS, Betsy Balustrade, keeps a collection of spreadsheets and other documents which she uses to plan and manage the class schedule each year. The technology director of CMHS, Cathy Colever, decides to adopt SchoolTool as the Student Information System (SIS) of CMHS. She installs SchoolTool and integrates it with their existing Moodle, and all the information in Moodle about the teachers, students, courses, enrollments, and grades is transferred to SchoolTool. Cathy provides a series of training sessions for Betsy and her administrative assistant Astra Lodge. Since not every course in the school is in Moodle, Astra enters information about some courses, teachers, and student enrollments into SchoolTool manually. After that, Betsy is able to use SchoolTool to create the schedule for each upcoming semester.&lt;br /&gt;
#:[https://docs.moodle.org/en/images_en/d/d1/Country-mouse.dia Country-mouse.dia source file]&lt;br /&gt;
## Phase 2 Part 1: Users&lt;br /&gt;
##:[[Image:Country-mouse1.png|300px]]&lt;br /&gt;
## Phase 2 Part 2: Enrollments&lt;br /&gt;
##:[[Image:Country-mouse2.png|300px]]&lt;br /&gt;
## Phase 2 Part 3: Grades&lt;br /&gt;
##:[[Image:Country-mouse3.png|300px]]&lt;br /&gt;
&lt;br /&gt;
===Flowcharts Because We Like Them===&lt;br /&gt;
* address each of the above scenarios...&lt;br /&gt;
* show technical detail for transfer of user account(s) from Moodle to SchoolTool&lt;br /&gt;
:[[Image:SchoolTool_Integration_Userdata.dia]]&lt;br /&gt;
:[[Image:SchoolTool_Integration_Userdata.png|200px]]&lt;br /&gt;
* show technical detail for transfer of enrollment(s) from Moodle to SchoolTool&lt;br /&gt;
:[[Image:SchoolTool_Integration_Enrollment.dia]]&lt;br /&gt;
:[[Image:SchoolTool_Integration_Enrollment.png|200px]]&lt;br /&gt;
* show technical detail for transfer of grades(s) from Moodle to SchoolTool&lt;br /&gt;
:[[Image:SchoolTool_Integration_Grades.dia]]&lt;br /&gt;
:[[Image:SchoolTool_Integration_Grades.png|200px]]&lt;br /&gt;
&lt;br /&gt;
===Part 1: SSO===&lt;br /&gt;
When this is done, we should have much of the functionality that Moodle+Mahara currently offers. In particular, there should be a completely Web-based configuration to integrate Moodle with SchoolTool, and the result should be that all Moodle users suddenly have SchoolTool accounts as well.&lt;br /&gt;
====Tasks====&lt;br /&gt;
* Moodle (Matt)&lt;br /&gt;
** UI: Make Moodle aware of SchoolTool as a potential SSO peer.&lt;br /&gt;
** Add new auth plugin to send info to SchoolTool and to accept SSO back from SchoolTool.&lt;br /&gt;
** Create spec for Brett to implement inward and outward portion of SSO in SchoolTool. Needs to answer the following questions:&lt;br /&gt;
*** What URL will Moodle call when attempting to initiate outbound SSO?&lt;br /&gt;
*** How will Moodle provide the authentication token to the remote system?&lt;br /&gt;
*** What URL does Moodle expect to be called with to accept incoming SSO?&lt;br /&gt;
*** How does Moodle expect to be given the authentication token?&lt;br /&gt;
* Fully implemented MNet linkage and SSO between Moodle and SchoolTool (Brett)&lt;br /&gt;
** Ability to configure one or more Moodle systems as MNet peers within SchoolTool&lt;br /&gt;
*** Add new peer&lt;br /&gt;
*** View / verify peer status&lt;br /&gt;
*** Delete peer&lt;br /&gt;
** After configuration, ability to perform SSO login from SchoolTool to Moodle&lt;br /&gt;
** After configuration, ability to accept SSO login from Moodle to SchoolTool&lt;br /&gt;
*** Authorization to log in will be determined by SchoolTool. To prevent unwanted student logins, the default is that imported user accounts will not have login rights unless changed manually in SchoolTool&lt;br /&gt;
** Unit tests to cover each of the above features&lt;br /&gt;
* SchoolTool back-end (Douglas)&lt;br /&gt;
** Accept new user info from any integrated Moodle that calls.&lt;br /&gt;
*** Handle username collisions. (See Mahara &amp;amp; Moodle.)&lt;br /&gt;
*** Consider how user profile fields are handled.&lt;br /&gt;
*** Remember that the client does not want Students to be able to log in. How will these logins be prevented? (See related note above in UI section.)&lt;br /&gt;
** Periodically ask for a full-sync with each integrated Moodle.&lt;br /&gt;
&lt;br /&gt;
===Part 2: Enrollments===&lt;br /&gt;
====Tasks====&lt;br /&gt;
===Part 3: Grades===&lt;br /&gt;
====Tasks====&lt;br /&gt;
&lt;br /&gt;
==Misc. TODO==&lt;br /&gt;
* Matt/Tom: Find out what reports ECHS will want from SchoolTool&lt;br /&gt;
&lt;br /&gt;
* SchoolTool TODO list&lt;br /&gt;
** Create an &amp;quot;ongoing section&amp;quot; container that will contain (otherwise normal) sections that do not fit into the year/term schema.&lt;br /&gt;
*** integration v1.0 will place all Moodle-driven sections in the &amp;quot;ongoing&amp;quot; container&lt;br /&gt;
** Add enumerated status field to enrollment (e.g., Active, Withdrawn No Grade, Withdrawn Failing, Passed) This will not initially include a workflow, but simply a current state and a history of states.&lt;br /&gt;
** Add support for section history&lt;br /&gt;
*** grading history&lt;br /&gt;
*** enrollment history (including all enrollment status changes)&lt;br /&gt;
*** teacher history&lt;/div&gt;</summary>
		<author><name>Moquist</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/32/en/index.php?title=Development:SchoolTool_Integration&amp;diff=62173</id>
		<title>Development:SchoolTool Integration</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/32/en/index.php?title=Development:SchoolTool_Integration&amp;diff=62173"/>
		<updated>2009-08-28T03:54:05Z</updated>

		<summary type="html">&lt;p&gt;Moquist: /* Tasks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [http://schooltool.org SchoolTool] SIS project recently released version 1.0, and lots of people could benefit from a solid integration between Moodle and SchoolTool. This page is a work-in-progress specification for the first version of this integration.&lt;br /&gt;
&lt;br /&gt;
==Goal: Moodle-SchoolTool integration modeled on Moodle-Mahara integration.==&lt;br /&gt;
* SchoolTool-Mahara integration should require very little extra effort when this project is complete.&lt;br /&gt;
* SchoolTool+Moodle+Mahara will provide a complete, integrated school administration/learning/portfolio suite that will be easily installable and supportable by time-crunched education systems administrators.&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
* Completely web-based integration configuration (similar to Moodle-Mahara configuration)&lt;br /&gt;
* SSO between SchoolTool and Moodle&lt;br /&gt;
* User accounts, courses, enrolments, assignments, and grades auto-update in SchoolTool&lt;br /&gt;
* Automatic grade transfer from Moodle to SchoolTool&lt;br /&gt;
&lt;br /&gt;
==Integration v1.0 NON-Requirements==&lt;br /&gt;
* Users, courses, enrolments can originate in and be managed within SchoolTool, with Moodle updating from SchoolTool.&lt;br /&gt;
** This will be the goal of the next version of the integration.&lt;br /&gt;
&lt;br /&gt;
==Assumptions==&lt;br /&gt;
* SchoolTool is the authoritative reporting application.&lt;br /&gt;
* Moodle drives all data creation and management.&lt;br /&gt;
&lt;br /&gt;
==Supported versions==&lt;br /&gt;
* SchoolTool 1.0&lt;br /&gt;
* Moodle 1.9.5+&lt;br /&gt;
&lt;br /&gt;
==Terminology Disambiguation==&lt;br /&gt;
* course: A SchoolTool course.&lt;br /&gt;
** SchoolTool &amp;quot;course&amp;quot; has no Moodle analogue. (&amp;quot;Algebra 1&amp;quot;) can have multiple &amp;quot;sections&amp;quot; (&amp;quot;Algebra 1 @ 9:15 taught by Mr. Smith&amp;quot;).&lt;br /&gt;
* section: A SchoolTool section, a Moodle course.&lt;br /&gt;
&lt;br /&gt;
==Background info and references==&lt;br /&gt;
* [https://docs.moodle.org/en/Grades Moodle 1.9+ gradebook]&lt;br /&gt;
* [https://docs.moodle.org/en/External_database Moodle external DB enrolment plugin ]&lt;br /&gt;
&lt;br /&gt;
==Implementation notes/ideas==&lt;br /&gt;
* The [http://git.catalyst.net.nz/mnet.git/ PHP mnet library] has been [https://code.edge.launchpad.net/~mnet-maintainers/mnet-wsgi/main ported to python.]&lt;br /&gt;
** SchoolTool will need to use this library.&lt;br /&gt;
* Moodle will need some awareness of SchoolTool in the mnet auth plugin. Not sure yet what this entails. (i.e., Mahara shows up in the list. We need SchoolTool in there, too.)&lt;br /&gt;
* Moodle will need an enrolment plugin that gets data from mnet but is otherwise modeled on the external DB enrolment plugin.&lt;br /&gt;
* Moodle will need a gradebook plugin that can pass grades to SchoolTool via mnet.&lt;br /&gt;
* integration v1.0 will not batch updates from Moodle to SchoolTool. Updates will be small and frequent.&lt;br /&gt;
&lt;br /&gt;
==Use Cases==&lt;br /&gt;
* integration v1.0: Drop SchoolTool into existing Moodle site, leave Moodle as driver of user directory and enrollment management.&lt;br /&gt;
** Accounts manually created in SchoolTool may or may not be integratable with Moodle. (Matt recommends this as a feature, but it should not be required for v1.0.)&lt;br /&gt;
** All course creation and enrollment updates must happen first in Moodle and be transferred from there to SchoolTool.&lt;br /&gt;
** Enrollment can be student-driven.&lt;br /&gt;
** An interactive enrollment in Moodle kicks off an immediate transaction to record the enrollment in schooltool.&lt;br /&gt;
* future integration version only: Drop SchoolTool into existing Moodle site, after bulk data transfer from Moodle-&amp;gt;SchoolTool, flip configuration and use SchoolTool as the authoritative user directory and/or enrollment management system.&lt;br /&gt;
** Could this be used to migrate to SchoolTool from another SIS (integrated somehow with Moodle) by way of Moodle?&lt;br /&gt;
* Start fresh with both.&lt;br /&gt;
* future integration version only: Drop Moodle into SchoolTool site.&lt;br /&gt;
** maybe not important for v1.0, might basically come for free&lt;br /&gt;
* future integration version only: Drop SchoolTool into Mahara site (and vice-versa)&lt;br /&gt;
&#039;&#039;&#039;In summary, integration v1.0 will be a Moodle-&amp;gt;SchoolTool integration. We are laying a foundation for a future bidirectional integration in which sections are created and teachers and enrollments are managed in SchoolTool, while Moodle regularly reports grades back to SchoolTool.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==User Interfaces==&lt;br /&gt;
* The integration configuration interfaces will be modeled on the existing interfaces for integrating Moodle and Mahara. See this document for a characterization of the type of admin user experience we want: [http://eduforge.org/docman/view.php/176/3200/Mahoodle.pdf Mahoodle.pdf]&lt;br /&gt;
* Moodle UIs&lt;br /&gt;
** Auth plugin config&lt;br /&gt;
** Enrolment plugin config&lt;br /&gt;
** Grade export config&lt;br /&gt;
* SchoolTool UIs&lt;br /&gt;
** similar division of config screens&lt;br /&gt;
** equivalent of Moodle&#039;s &amp;quot;Network Servers&amp;quot; block with links to SSO peers&lt;br /&gt;
** equivalent of &amp;quot;You have logged in from &amp;lt;somelink&amp;gt;&amp;quot; to go back after SSO&lt;br /&gt;
&lt;br /&gt;
==Mnet==&lt;br /&gt;
* What, in summary, does MNET provide?&lt;br /&gt;
** MNET is an XMLRPC implementation that dispatches messages to applications on either side (with a convention for function naming).&lt;br /&gt;
** MNET has a security layer that enforces that every message is encrypted and signed (with regular key rotation).&lt;br /&gt;
** MNET provides a core set of modules to provide common functionality such as SSO, key discovery, ping, and course enrollment.&lt;br /&gt;
&lt;br /&gt;
===Moodle mnet Interfaces===&lt;br /&gt;
* existing: SSO IDP interfaces&lt;br /&gt;
** in integration v1.0, SchoolTool will only be a Service Provider and Moodle will always be the IDentity Provider&lt;br /&gt;
** returns user data sufficient to create account&lt;br /&gt;
* list_user_enrolments(user)&lt;br /&gt;
** returns a list of all enrolments for a given user&lt;br /&gt;
** SchoolTool may call this to get enrolment data ASAP when an unknown user authenticates and an account is created using user_authorise()&lt;br /&gt;
&lt;br /&gt;
===SchoolTool mnet Interfaces===&lt;br /&gt;
* fetch_user(userdata)&lt;br /&gt;
** tell SchoolTool to ask Moodle for one user&#039;s data&lt;br /&gt;
** userdata: associative array such as:&lt;br /&gt;
*** username=&amp;gt;moquist&lt;br /&gt;
*** firstname=&amp;gt;Matt&lt;br /&gt;
*** lastname=&amp;gt;Oquist&lt;br /&gt;
*** idnumber=&amp;gt;1234457 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** email=&amp;gt;moquist@majen.net&lt;br /&gt;
*** password_hash=&amp;gt;234lih23rlh2asldfjas&lt;br /&gt;
*** password_hash_algorithm=&amp;gt;md5&lt;br /&gt;
*** ircnick=&amp;gt;moquist&lt;br /&gt;
*** arbitrary_field=&amp;gt;arbitrary_data_string...&lt;br /&gt;
**** SchoolTool only cares about enough to create a login account.&lt;br /&gt;
**** SchoolTool does not care about student-editable profile fields.&lt;br /&gt;
* new_section(sectiondata)&lt;br /&gt;
** sectiondata: associative array such as:&lt;br /&gt;
*** name=&amp;gt;&amp;quot;Algebra 1 V1 Mrs. Smith: Cats and their Affectations&amp;quot;&lt;br /&gt;
*** idnumber=&amp;gt;197423 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** teacheridnumber=&amp;gt;987234 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** segment=&amp;gt;1 # a section may have more than one semester/segment/term(?)&lt;br /&gt;
* new_enrolment(enrolmentdata)&lt;br /&gt;
** create new association between user &amp;amp; section&lt;br /&gt;
** enrolmentdata: associative array such as:&lt;br /&gt;
*** sectionid=&amp;gt;197423 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** userid=&amp;gt;987234 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** role=&amp;gt;&#039;teacher&#039; # only &#039;student&#039; and &#039;teacher&#039; supported in integration v1.0&lt;br /&gt;
* new_assessment(assessmentdata)&lt;br /&gt;
** create new assessment to be displayed in grade reports&lt;br /&gt;
** assessmentdata: associative array such as:&lt;br /&gt;
*** sectionid=&amp;gt;197423 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** name=&amp;gt;&amp;quot;How to grill a logarithmic sandwich&amp;quot;&lt;br /&gt;
*** idnumber=&amp;gt;73743734 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** chapternum=&amp;gt;3&lt;br /&gt;
*** honors_required=&amp;gt;false&lt;br /&gt;
*** nonhonors_required=&amp;gt;true&lt;br /&gt;
*** extra_credit=&amp;gt;false&lt;br /&gt;
*** pointval=&amp;gt;68&lt;br /&gt;
* new_grade(gradedata)&lt;br /&gt;
** make entry in gradebook&lt;br /&gt;
** gradedata: associative array such as:&lt;br /&gt;
*** assessmentid=&amp;gt;73743734&lt;br /&gt;
*** userid=&amp;gt;2347234 # unique shared ID of student&lt;br /&gt;
*** points_earned=&amp;gt;62&lt;br /&gt;
*** excepted=&amp;gt;false&lt;br /&gt;
*** attempt_num=&amp;gt;1 # if multiple attempts are allowed&lt;br /&gt;
&lt;br /&gt;
==Phase 2==&lt;br /&gt;
* Some discussion is taking place [http://moodle.org/mod/forum/discuss.php?d=129267 here].&lt;br /&gt;
===Scenarios===&lt;br /&gt;
# Susie Sunglasses will return to Town High School for her senior year. During the last week of school in her junior year, she sits down in the computer lab, logs into Moodle, and enrolls herself in each of the 5 courses she wishes to take during the fall semester. Moodle sends information about these enrollments to SchoolTool, and when THS principal Patricia Participle logs in to SchoolTool in July she is able to see which courses Susie will be taking in the fall.&lt;br /&gt;
#:[https://docs.moodle.org/en/images_en/d/d1/Susie-and-patricia.dia Susie-and-patricia.dia source file]&lt;br /&gt;
#:[[Image:Susie-and-patricia.png|300px]]&lt;br /&gt;
# Tommy Trackstar is a new student at Town High School. He consults immediately with guidance counselor Guinevere, who logs into Moodle and enrolls him in all his chosen courses. As Tommy completes his work and grades are given (some automatically and some manually by the teacher) in Moodle, each grade is also transferred to SchoolTool, which is thereby able to generate an up-to-date progress report for Tommy at any desired point in time (past or present).&lt;br /&gt;
#:[https://docs.moodle.org/en/images_en/a/af/Tommy-and-guinevere1.dia Tommy-and-guinevere1.dia source file]&lt;br /&gt;
#:[[Image:Tommy-and-guinevere1.png|500px]]&lt;br /&gt;
# Track season comes around, and Tommy gets too busy with practice. After careful consideration of all his available options, Tommy decides to drop Mathematics of Whistling to have an extra hour to run each day. Either he or guidance counselor Guinevere unenrolls him in Moodle from Mathematics of Whistling. The unenrollment is transferred directly to SchoolTool, and Guinevere is able to enter a note and a withdrawal code to explain what happened. This withdrawal is then included on Tommy&#039;s transcript.&lt;br /&gt;
#:[https://docs.moodle.org/en/images_en/2/2b/Tommy-and-guinevere2.dia Tommy-and-guinevere2.dia source file]&lt;br /&gt;
#:[[Image:Tommy-and-guinevere2.png|500px]]&lt;br /&gt;
# Samantha Stupenda, widely rumored to be the most demanding science teacher at THS, has developed assignments for the newest chapter of the textbook she&#039;s writing (&amp;quot;Earth Science Internalized: No Escape&amp;quot;). Samantha adds each of these assignments to her course in Moodle. As she adds each assignment, it is transferred to SchoolTool as a grade item for the section, and SchoolTool will be prepared to accept grade data for each student enrolled in Samantha&#039;s course.&lt;br /&gt;
#:[https://docs.moodle.org/en/images_en/5/56/Samantha1.dia Samantha1.dia source file]&lt;br /&gt;
#:[[Image:Samantha1.png|500px]]&lt;br /&gt;
# Vera Vestibule is taking Bubble Blowing 101, which has no Moodle component at all. Guidance counselor Guinevere logs into SchoolTool and 1) creates a course (&amp;quot;Bubble Blowing 101&amp;quot;), 2) creates a section of the course (&amp;quot;Bubble Blowing 101 taught by Chewie Chomper&amp;quot;), and 3) enrolls Vera in the section. Chewie uploads in SchoolTool a spreadsheet specifying the gradeable assignments in the course. As his students complete the assignments, Chewie enters their grades in SchoolTool, which is then able to include this course and these grades in student progress reports and transcripts.&lt;br /&gt;
#:[https://docs.moodle.org/en/images_en/d/d1/Vera.dia Vera.dia source file]&lt;br /&gt;
#:[[Image:Vera.png|300px]]&lt;br /&gt;
# Samantha Stupenda also teaches Chemistry. All her class assignments are graded in Moodle, and those grades transfer automatically to SchoolTool. But her lab assignments are not in Moodle, and Samantha creates grade items and enters those grades manually into her Chemistry sections in SchoolTool. Halfway through the school year, Samantha decides to represent those lab assignments in Moodle, and she is careful to use *exactly* the same names that she entered into SchoolTool previously. What happens?&lt;br /&gt;
# Country Mouse High School has been using Moodle for the past 3 years, and many but not all of the teachers have enthusiastically created Moodle courses that they use extensively in their classrooms. However, some teachers do not have a Moodle presence at all. The principal of CMHS, Betsy Balustrade, keeps a collection of spreadsheets and other documents which she uses to plan and manage the class schedule each year. The technology director of CMHS, Cathy Colever, decides to adopt SchoolTool as the Student Information System (SIS) of CMHS. She installs SchoolTool and integrates it with their existing Moodle, and all the information in Moodle about the teachers, students, courses, enrollments, and grades is transferred to SchoolTool. Cathy provides a series of training sessions for Betsy and her administrative assistant Astra Lodge. Since not every course in the school is in Moodle, Astra enters information about some courses, teachers, and student enrollments into SchoolTool manually. After that, Betsy is able to use SchoolTool to create the schedule for each upcoming semester.&lt;br /&gt;
#:[https://docs.moodle.org/en/images_en/d/d1/Country-mouse.dia Country-mouse.dia source file]&lt;br /&gt;
## Phase 2 Part 1: Users&lt;br /&gt;
##:[[Image:Country-mouse1.png|300px]]&lt;br /&gt;
## Phase 2 Part 2: Enrollments&lt;br /&gt;
##:[[Image:Country-mouse2.png|300px]]&lt;br /&gt;
## Phase 2 Part 3: Grades&lt;br /&gt;
##:[[Image:Country-mouse3.png|300px]]&lt;br /&gt;
&lt;br /&gt;
===Flowcharts Because We Like Them===&lt;br /&gt;
* address each of the above scenarios...&lt;br /&gt;
* show technical detail for transfer of user account(s) from Moodle to SchoolTool&lt;br /&gt;
:[[Image:SchoolTool_Integration_Userdata.dia]]&lt;br /&gt;
:[[Image:SchoolTool_Integration_Userdata.png|200px]]&lt;br /&gt;
* show technical detail for transfer of enrollment(s) from Moodle to SchoolTool&lt;br /&gt;
:[[Image:SchoolTool_Integration_Enrollment.dia]]&lt;br /&gt;
:[[Image:SchoolTool_Integration_Enrollment.png|200px]]&lt;br /&gt;
* show technical detail for transfer of grades(s) from Moodle to SchoolTool&lt;br /&gt;
:[[Image:SchoolTool_Integration_Grades.dia]]&lt;br /&gt;
:[[Image:SchoolTool_Integration_Grades.png|200px]]&lt;br /&gt;
&lt;br /&gt;
===Part 1: SSO===&lt;br /&gt;
When this is done, we should have much of the functionality that Moodle+Mahara currently offers. In particular, there should be a completely Web-based configuration to integrate Moodle with SchoolTool, and the result should be that all Moodle users suddenly have SchoolTool accounts as well.&lt;br /&gt;
====Tasks====&lt;br /&gt;
* Moodle (Matt)&lt;br /&gt;
** UI: Make Moodle aware of SchoolTool as a potential SSO peer.&lt;br /&gt;
** Add new auth plugin to send info to SchoolTool and to accept SSO back from SchoolTool.&lt;br /&gt;
** Create spec for Brett to implement outward portion of SSO in SchoolTool.&lt;br /&gt;
* SchoolTool UI+Mnet (Brett)&lt;br /&gt;
** UI: link to configured Moodle peers&lt;br /&gt;
** UI: link back to Moodle after Moodle-&amp;gt;SchoolTool SSO login&lt;br /&gt;
** UI: Mnet SSO configuration (with one or more Moodles)&lt;br /&gt;
*** Consider any configuration of the SSO. Choose sensible defaults, make helpful options modifiable.&lt;br /&gt;
*** Remember that the client does not want Students to be able to log in. How will this be a configurable option? (This may not be doable until we&#039;re passing enrollments to SchoolTool, since Moodle doesn&#039;t actually distinguish between types of users (student/teacher), but merely roles in contexts.)&lt;br /&gt;
* SchoolTool back-end (Douglas)&lt;br /&gt;
** Accept new user info from any integrated Moodle that calls.&lt;br /&gt;
*** Handle username collisions. (See Mahara &amp;amp; Moodle.)&lt;br /&gt;
*** Consider how user profile fields are handled.&lt;br /&gt;
*** Remember that the client does not want Students to be able to log in. How will these logins be prevented? (See related note above in UI section.)&lt;br /&gt;
** Periodically ask for a full-sync with each integrated Moodle.&lt;br /&gt;
&lt;br /&gt;
===Part 2: Enrollments===&lt;br /&gt;
====Tasks====&lt;br /&gt;
===Part 3: Grades===&lt;br /&gt;
====Tasks====&lt;br /&gt;
&lt;br /&gt;
==Misc. TODO==&lt;br /&gt;
* Matt/Tom: Find out what reports ECHS will want from SchoolTool&lt;br /&gt;
&lt;br /&gt;
* SchoolTool TODO list&lt;br /&gt;
** Create an &amp;quot;ongoing section&amp;quot; container that will contain (otherwise normal) sections that do not fit into the year/term schema.&lt;br /&gt;
*** integration v1.0 will place all Moodle-driven sections in the &amp;quot;ongoing&amp;quot; container&lt;br /&gt;
** Add enumerated status field to enrollment (e.g., Active, Withdrawn No Grade, Withdrawn Failing, Passed) This will not initially include a workflow, but simply a current state and a history of states.&lt;br /&gt;
** Add support for section history&lt;br /&gt;
*** grading history&lt;br /&gt;
*** enrollment history (including all enrollment status changes)&lt;br /&gt;
*** teacher history&lt;/div&gt;</summary>
		<author><name>Moquist</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/32/en/index.php?title=Development:SchoolTool_Integration&amp;diff=62073</id>
		<title>Development:SchoolTool Integration</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/32/en/index.php?title=Development:SchoolTool_Integration&amp;diff=62073"/>
		<updated>2009-08-25T20:58:38Z</updated>

		<summary type="html">&lt;p&gt;Moquist: /* Part 1: SSO */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [http://schooltool.org SchoolTool] SIS project recently released version 1.0, and lots of people could benefit from a solid integration between Moodle and SchoolTool. This page is a work-in-progress specification for the first version of this integration.&lt;br /&gt;
&lt;br /&gt;
==Goal: Moodle-SchoolTool integration modeled on Moodle-Mahara integration.==&lt;br /&gt;
* SchoolTool-Mahara integration should require very little extra effort when this project is complete.&lt;br /&gt;
* SchoolTool+Moodle+Mahara will provide a complete, integrated school administration/learning/portfolio suite that will be easily installable and supportable by time-crunched education systems administrators.&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
* Completely web-based integration configuration (similar to Moodle-Mahara configuration)&lt;br /&gt;
* SSO between SchoolTool and Moodle&lt;br /&gt;
* User accounts, courses, enrolments, assignments, and grades auto-update in SchoolTool&lt;br /&gt;
* Automatic grade transfer from Moodle to SchoolTool&lt;br /&gt;
&lt;br /&gt;
==Integration v1.0 NON-Requirements==&lt;br /&gt;
* Users, courses, enrolments can originate in and be managed within SchoolTool, with Moodle updating from SchoolTool.&lt;br /&gt;
** This will be the goal of the next version of the integration.&lt;br /&gt;
&lt;br /&gt;
==Assumptions==&lt;br /&gt;
* SchoolTool is the authoritative reporting application.&lt;br /&gt;
* Moodle drives all data creation and management.&lt;br /&gt;
&lt;br /&gt;
==Supported versions==&lt;br /&gt;
* SchoolTool 1.0&lt;br /&gt;
* Moodle 1.9.5+&lt;br /&gt;
&lt;br /&gt;
==Terminology Disambiguation==&lt;br /&gt;
* course: A SchoolTool course.&lt;br /&gt;
** SchoolTool &amp;quot;course&amp;quot; has no Moodle analogue. (&amp;quot;Algebra 1&amp;quot;) can have multiple &amp;quot;sections&amp;quot; (&amp;quot;Algebra 1 @ 9:15 taught by Mr. Smith&amp;quot;).&lt;br /&gt;
* section: A SchoolTool section, a Moodle course.&lt;br /&gt;
&lt;br /&gt;
==Background info and references==&lt;br /&gt;
* [https://docs.moodle.org/en/Grades Moodle 1.9+ gradebook]&lt;br /&gt;
* [https://docs.moodle.org/en/External_database Moodle external DB enrolment plugin ]&lt;br /&gt;
&lt;br /&gt;
==Implementation notes/ideas==&lt;br /&gt;
* The [http://git.catalyst.net.nz/mnet.git/ PHP mnet library] has been [https://code.edge.launchpad.net/~mnet-maintainers/mnet-wsgi/main ported to python.]&lt;br /&gt;
** SchoolTool will need to use this library.&lt;br /&gt;
* Moodle will need some awareness of SchoolTool in the mnet auth plugin. Not sure yet what this entails. (i.e., Mahara shows up in the list. We need SchoolTool in there, too.)&lt;br /&gt;
* Moodle will need an enrolment plugin that gets data from mnet but is otherwise modeled on the external DB enrolment plugin.&lt;br /&gt;
* Moodle will need a gradebook plugin that can pass grades to SchoolTool via mnet.&lt;br /&gt;
* integration v1.0 will not batch updates from Moodle to SchoolTool. Updates will be small and frequent.&lt;br /&gt;
&lt;br /&gt;
==Use Cases==&lt;br /&gt;
* integration v1.0: Drop SchoolTool into existing Moodle site, leave Moodle as driver of user directory and enrollment management.&lt;br /&gt;
** Accounts manually created in SchoolTool may or may not be integratable with Moodle. (Matt recommends this as a feature, but it should not be required for v1.0.)&lt;br /&gt;
** All course creation and enrollment updates must happen first in Moodle and be transferred from there to SchoolTool.&lt;br /&gt;
** Enrollment can be student-driven.&lt;br /&gt;
** An interactive enrollment in Moodle kicks off an immediate transaction to record the enrollment in schooltool.&lt;br /&gt;
* future integration version only: Drop SchoolTool into existing Moodle site, after bulk data transfer from Moodle-&amp;gt;SchoolTool, flip configuration and use SchoolTool as the authoritative user directory and/or enrollment management system.&lt;br /&gt;
** Could this be used to migrate to SchoolTool from another SIS (integrated somehow with Moodle) by way of Moodle?&lt;br /&gt;
* Start fresh with both.&lt;br /&gt;
* future integration version only: Drop Moodle into SchoolTool site.&lt;br /&gt;
** maybe not important for v1.0, might basically come for free&lt;br /&gt;
* future integration version only: Drop SchoolTool into Mahara site (and vice-versa)&lt;br /&gt;
&#039;&#039;&#039;In summary, integration v1.0 will be a Moodle-&amp;gt;SchoolTool integration. We are laying a foundation for a future bidirectional integration in which sections are created and teachers and enrollments are managed in SchoolTool, while Moodle regularly reports grades back to SchoolTool.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==User Interfaces==&lt;br /&gt;
* The integration configuration interfaces will be modeled on the existing interfaces for integrating Moodle and Mahara. See this document for a characterization of the type of admin user experience we want: [http://eduforge.org/docman/view.php/176/3200/Mahoodle.pdf Mahoodle.pdf]&lt;br /&gt;
* Moodle UIs&lt;br /&gt;
** Auth plugin config&lt;br /&gt;
** Enrolment plugin config&lt;br /&gt;
** Grade export config&lt;br /&gt;
* SchoolTool UIs&lt;br /&gt;
** similar division of config screens&lt;br /&gt;
** equivalent of Moodle&#039;s &amp;quot;Network Servers&amp;quot; block with links to SSO peers&lt;br /&gt;
** equivalent of &amp;quot;You have logged in from &amp;lt;somelink&amp;gt;&amp;quot; to go back after SSO&lt;br /&gt;
&lt;br /&gt;
==Mnet==&lt;br /&gt;
* What, in summary, does MNET provide?&lt;br /&gt;
** MNET is an XMLRPC implementation that dispatches messages to applications on either side (with a convention for function naming).&lt;br /&gt;
** MNET has a security layer that enforces that every message is encrypted and signed (with regular key rotation).&lt;br /&gt;
** MNET provides a core set of modules to provide common functionality such as SSO, key discovery, ping, and course enrollment.&lt;br /&gt;
&lt;br /&gt;
===Moodle mnet Interfaces===&lt;br /&gt;
* existing: SSO IDP interfaces&lt;br /&gt;
** in integration v1.0, SchoolTool will only be a Service Provider and Moodle will always be the IDentity Provider&lt;br /&gt;
** returns user data sufficient to create account&lt;br /&gt;
* list_user_enrolments(user)&lt;br /&gt;
** returns a list of all enrolments for a given user&lt;br /&gt;
** SchoolTool may call this to get enrolment data ASAP when an unknown user authenticates and an account is created using user_authorise()&lt;br /&gt;
&lt;br /&gt;
===SchoolTool mnet Interfaces===&lt;br /&gt;
* fetch_user(userdata)&lt;br /&gt;
** tell SchoolTool to ask Moodle for one user&#039;s data&lt;br /&gt;
** userdata: associative array such as:&lt;br /&gt;
*** username=&amp;gt;moquist&lt;br /&gt;
*** firstname=&amp;gt;Matt&lt;br /&gt;
*** lastname=&amp;gt;Oquist&lt;br /&gt;
*** idnumber=&amp;gt;1234457 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** email=&amp;gt;moquist@majen.net&lt;br /&gt;
*** password_hash=&amp;gt;234lih23rlh2asldfjas&lt;br /&gt;
*** password_hash_algorithm=&amp;gt;md5&lt;br /&gt;
*** ircnick=&amp;gt;moquist&lt;br /&gt;
*** arbitrary_field=&amp;gt;arbitrary_data_string...&lt;br /&gt;
**** SchoolTool only cares about enough to create a login account.&lt;br /&gt;
**** SchoolTool does not care about student-editable profile fields.&lt;br /&gt;
* new_section(sectiondata)&lt;br /&gt;
** sectiondata: associative array such as:&lt;br /&gt;
*** name=&amp;gt;&amp;quot;Algebra 1 V1 Mrs. Smith: Cats and their Affectations&amp;quot;&lt;br /&gt;
*** idnumber=&amp;gt;197423 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** teacheridnumber=&amp;gt;987234 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** segment=&amp;gt;1 # a section may have more than one semester/segment/term(?)&lt;br /&gt;
* new_enrolment(enrolmentdata)&lt;br /&gt;
** create new association between user &amp;amp; section&lt;br /&gt;
** enrolmentdata: associative array such as:&lt;br /&gt;
*** sectionid=&amp;gt;197423 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** userid=&amp;gt;987234 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** role=&amp;gt;&#039;teacher&#039; # only &#039;student&#039; and &#039;teacher&#039; supported in integration v1.0&lt;br /&gt;
* new_assessment(assessmentdata)&lt;br /&gt;
** create new assessment to be displayed in grade reports&lt;br /&gt;
** assessmentdata: associative array such as:&lt;br /&gt;
*** sectionid=&amp;gt;197423 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** name=&amp;gt;&amp;quot;How to grill a logarithmic sandwich&amp;quot;&lt;br /&gt;
*** idnumber=&amp;gt;73743734 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** chapternum=&amp;gt;3&lt;br /&gt;
*** honors_required=&amp;gt;false&lt;br /&gt;
*** nonhonors_required=&amp;gt;true&lt;br /&gt;
*** extra_credit=&amp;gt;false&lt;br /&gt;
*** pointval=&amp;gt;68&lt;br /&gt;
* new_grade(gradedata)&lt;br /&gt;
** make entry in gradebook&lt;br /&gt;
** gradedata: associative array such as:&lt;br /&gt;
*** assessmentid=&amp;gt;73743734&lt;br /&gt;
*** userid=&amp;gt;2347234 # unique shared ID of student&lt;br /&gt;
*** points_earned=&amp;gt;62&lt;br /&gt;
*** excepted=&amp;gt;false&lt;br /&gt;
*** attempt_num=&amp;gt;1 # if multiple attempts are allowed&lt;br /&gt;
&lt;br /&gt;
==Phase 2==&lt;br /&gt;
* Some discussion is taking place [http://moodle.org/mod/forum/discuss.php?d=129267 here].&lt;br /&gt;
===Scenarios===&lt;br /&gt;
# Susie Sunglasses will return to Town High School for her senior year. During the last week of school in her junior year, she sits down in the computer lab, logs into Moodle, and enrolls herself in each of the 5 courses she wishes to take during the fall semester. Moodle sends information about these enrollments to SchoolTool, and when THS principal Patricia Participle logs in to SchoolTool in July she is able to see which courses Susie will be taking in the fall.&lt;br /&gt;
#:[https://docs.moodle.org/en/images_en/d/d1/Susie-and-patricia.dia Susie-and-patricia.dia source file]&lt;br /&gt;
#:[[Image:Susie-and-patricia.png|300px]]&lt;br /&gt;
# Tommy Trackstar is a new student at Town High School. He consults immediately with guidance counselor Guinevere, who logs into Moodle and enrolls him in all his chosen courses. As Tommy completes his work and grades are given (some automatically and some manually by the teacher) in Moodle, each grade is also transferred to SchoolTool, which is thereby able to generate an up-to-date progress report for Tommy at any desired point in time (past or present).&lt;br /&gt;
#:[https://docs.moodle.org/en/images_en/a/af/Tommy-and-guinevere1.dia Tommy-and-guinevere1.dia source file]&lt;br /&gt;
#:[[Image:Tommy-and-guinevere1.png|500px]]&lt;br /&gt;
# Track season comes around, and Tommy gets too busy with practice. After careful consideration of all his available options, Tommy decides to drop Mathematics of Whistling to have an extra hour to run each day. Either he or guidance counselor Guinevere unenrolls him in Moodle from Mathematics of Whistling. The unenrollment is transferred directly to SchoolTool, and Guinevere is able to enter a note and a withdrawal code to explain what happened. This withdrawal is then included on Tommy&#039;s transcript.&lt;br /&gt;
#:[https://docs.moodle.org/en/images_en/2/2b/Tommy-and-guinevere2.dia Tommy-and-guinevere2.dia source file]&lt;br /&gt;
#:[[Image:Tommy-and-guinevere2.png|500px]]&lt;br /&gt;
# Samantha Stupenda, widely rumored to be the most demanding science teacher at THS, has developed assignments for the newest chapter of the textbook she&#039;s writing (&amp;quot;Earth Science Internalized: No Escape&amp;quot;). Samantha adds each of these assignments to her course in Moodle. As she adds each assignment, it is transferred to SchoolTool as a grade item for the section, and SchoolTool will be prepared to accept grade data for each student enrolled in Samantha&#039;s course.&lt;br /&gt;
#:[https://docs.moodle.org/en/images_en/5/56/Samantha1.dia Samantha1.dia source file]&lt;br /&gt;
#:[[Image:Samantha1.png|500px]]&lt;br /&gt;
# Vera Vestibule is taking Bubble Blowing 101, which has no Moodle component at all. Guidance counselor Guinevere logs into SchoolTool and 1) creates a course (&amp;quot;Bubble Blowing 101&amp;quot;), 2) creates a section of the course (&amp;quot;Bubble Blowing 101 taught by Chewie Chomper&amp;quot;), and 3) enrolls Vera in the section. Chewie uploads in SchoolTool a spreadsheet specifying the gradeable assignments in the course. As his students complete the assignments, Chewie enters their grades in SchoolTool, which is then able to include this course and these grades in student progress reports and transcripts.&lt;br /&gt;
#:[https://docs.moodle.org/en/images_en/d/d1/Vera.dia Vera.dia source file]&lt;br /&gt;
#:[[Image:Vera.png|300px]]&lt;br /&gt;
# Samantha Stupenda also teaches Chemistry. All her class assignments are graded in Moodle, and those grades transfer automatically to SchoolTool. But her lab assignments are not in Moodle, and Samantha creates grade items and enters those grades manually into her Chemistry sections in SchoolTool. Halfway through the school year, Samantha decides to represent those lab assignments in Moodle, and she is careful to use *exactly* the same names that she entered into SchoolTool previously. What happens?&lt;br /&gt;
# Country Mouse High School has been using Moodle for the past 3 years, and many but not all of the teachers have enthusiastically created Moodle courses that they use extensively in their classrooms. However, some teachers do not have a Moodle presence at all. The principal of CMHS, Betsy Balustrade, keeps a collection of spreadsheets and other documents which she uses to plan and manage the class schedule each year. The technology director of CMHS, Cathy Colever, decides to adopt SchoolTool as the Student Information System (SIS) of CMHS. She installs SchoolTool and integrates it with their existing Moodle, and all the information in Moodle about the teachers, students, courses, enrollments, and grades is transferred to SchoolTool. Cathy provides a series of training sessions for Betsy and her administrative assistant Astra Lodge. Since not every course in the school is in Moodle, Astra enters information about some courses, teachers, and student enrollments into SchoolTool manually. After that, Betsy is able to use SchoolTool to create the schedule for each upcoming semester.&lt;br /&gt;
#:[https://docs.moodle.org/en/images_en/d/d1/Country-mouse.dia Country-mouse.dia source file]&lt;br /&gt;
## Phase 2 Part 1: Users&lt;br /&gt;
##:[[Image:Country-mouse1.png|300px]]&lt;br /&gt;
## Phase 2 Part 2: Enrollments&lt;br /&gt;
##:[[Image:Country-mouse2.png|300px]]&lt;br /&gt;
## Phase 2 Part 3: Grades&lt;br /&gt;
##:[[Image:Country-mouse3.png|300px]]&lt;br /&gt;
&lt;br /&gt;
===Flowcharts Because We Like Them===&lt;br /&gt;
* address each of the above scenarios...&lt;br /&gt;
* show technical detail for transfer of user account(s) from Moodle to SchoolTool&lt;br /&gt;
:[[Image:SchoolTool_Integration_Userdata.dia]]&lt;br /&gt;
:[[Image:SchoolTool_Integration_Userdata.png|200px]]&lt;br /&gt;
* show technical detail for transfer of enrollment(s) from Moodle to SchoolTool&lt;br /&gt;
:[[Image:SchoolTool_Integration_Enrollment.dia]]&lt;br /&gt;
:[[Image:SchoolTool_Integration_Enrollment.png|200px]]&lt;br /&gt;
* show technical detail for transfer of grades(s) from Moodle to SchoolTool&lt;br /&gt;
:[[Image:SchoolTool_Integration_Grades.dia]]&lt;br /&gt;
:[[Image:SchoolTool_Integration_Grades.png|200px]]&lt;br /&gt;
&lt;br /&gt;
===Part 1: SSO===&lt;br /&gt;
When this is done, we should have much of the functionality that Moodle+Mahara currently offers. In particular, there should be a completely Web-based configuration to integrate Moodle with SchoolTool, and the result should be that all Moodle users suddenly have SchoolTool accounts as well.&lt;br /&gt;
====Tasks====&lt;br /&gt;
* Moodle (Matt)&lt;br /&gt;
** Make Moodle aware of SchoolTool as a potential SSO peer.&lt;br /&gt;
** Add new auth plugin to send info to SchoolTool.&lt;br /&gt;
* SchoolTool UI+Mnet (Brett)&lt;br /&gt;
** UI: link to configured Moodle peers&lt;br /&gt;
** UI: link back to Moodle after Moodle-&amp;gt;SchoolTool SSO login&lt;br /&gt;
** UI: Mnet SSO configuration (with one or more Moodles)&lt;br /&gt;
*** Consider any configuration of the SSO. Choose sensible defaults, make helpful options modifiable.&lt;br /&gt;
*** Remember that the client does not want Students to be able to log in. How will this be a configurable option? (This may not be doable until we&#039;re passing enrollments to SchoolTool, since Moodle doesn&#039;t actually distinguish between types of users (student/teacher), but merely roles in contexts.)&lt;br /&gt;
* SchoolTool back-end (Douglas)&lt;br /&gt;
** Accept new user info from any integrated Moodle that calls.&lt;br /&gt;
*** Handle username collisions. (See Mahara &amp;amp; Moodle.)&lt;br /&gt;
*** Consider how user profile fields are handled.&lt;br /&gt;
*** Remember that the client does not want Students to be able to log in. How will these logins be prevented? (See related note above in UI section.)&lt;br /&gt;
** Periodically ask for a full-sync with each integrated Moodle.&lt;br /&gt;
&lt;br /&gt;
===Part 2: Enrollments===&lt;br /&gt;
====Tasks====&lt;br /&gt;
===Part 3: Grades===&lt;br /&gt;
====Tasks====&lt;br /&gt;
&lt;br /&gt;
==Misc. TODO==&lt;br /&gt;
* Matt/Tom: Find out what reports ECHS will want from SchoolTool&lt;br /&gt;
&lt;br /&gt;
* SchoolTool TODO list&lt;br /&gt;
** Create an &amp;quot;ongoing section&amp;quot; container that will contain (otherwise normal) sections that do not fit into the year/term schema.&lt;br /&gt;
*** integration v1.0 will place all Moodle-driven sections in the &amp;quot;ongoing&amp;quot; container&lt;br /&gt;
** Add enumerated status field to enrollment (e.g., Active, Withdrawn No Grade, Withdrawn Failing, Passed) This will not initially include a workflow, but simply a current state and a history of states.&lt;br /&gt;
** Add support for section history&lt;br /&gt;
*** grading history&lt;br /&gt;
*** enrollment history (including all enrollment status changes)&lt;br /&gt;
*** teacher history&lt;/div&gt;</summary>
		<author><name>Moquist</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/32/en/index.php?title=Development:SchoolTool_Integration&amp;diff=62013</id>
		<title>Development:SchoolTool Integration</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/32/en/index.php?title=Development:SchoolTool_Integration&amp;diff=62013"/>
		<updated>2009-08-24T01:07:19Z</updated>

		<summary type="html">&lt;p&gt;Moquist: /* Tasks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [http://schooltool.org SchoolTool] SIS project recently released version 1.0, and lots of people could benefit from a solid integration between Moodle and SchoolTool. This page is a work-in-progress specification for the first version of this integration.&lt;br /&gt;
&lt;br /&gt;
==Goal: Moodle-SchoolTool integration modeled on Moodle-Mahara integration.==&lt;br /&gt;
* SchoolTool-Mahara integration should require very little extra effort when this project is complete.&lt;br /&gt;
* SchoolTool+Moodle+Mahara will provide a complete, integrated school administration/learning/portfolio suite that will be easily installable and supportable by time-crunched education systems administrators.&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
* Completely web-based integration configuration (similar to Moodle-Mahara configuration)&lt;br /&gt;
* SSO between SchoolTool and Moodle&lt;br /&gt;
* User accounts, courses, enrolments, assignments, and grades auto-update in SchoolTool&lt;br /&gt;
* Automatic grade transfer from Moodle to SchoolTool&lt;br /&gt;
&lt;br /&gt;
==Integration v1.0 NON-Requirements==&lt;br /&gt;
* Users, courses, enrolments can originate in and be managed within SchoolTool, with Moodle updating from SchoolTool.&lt;br /&gt;
** This will be the goal of the next version of the integration.&lt;br /&gt;
&lt;br /&gt;
==Assumptions==&lt;br /&gt;
* SchoolTool is the authoritative reporting application.&lt;br /&gt;
* Moodle drives all data creation and management.&lt;br /&gt;
&lt;br /&gt;
==Supported versions==&lt;br /&gt;
* SchoolTool 1.0&lt;br /&gt;
* Moodle 1.9.5+&lt;br /&gt;
&lt;br /&gt;
==Terminology Disambiguation==&lt;br /&gt;
* course: A SchoolTool course.&lt;br /&gt;
** SchoolTool &amp;quot;course&amp;quot; has no Moodle analogue. (&amp;quot;Algebra 1&amp;quot;) can have multiple &amp;quot;sections&amp;quot; (&amp;quot;Algebra 1 @ 9:15 taught by Mr. Smith&amp;quot;).&lt;br /&gt;
* section: A SchoolTool section, a Moodle course.&lt;br /&gt;
&lt;br /&gt;
==Background info and references==&lt;br /&gt;
* [https://docs.moodle.org/en/Grades Moodle 1.9+ gradebook]&lt;br /&gt;
* [https://docs.moodle.org/en/External_database Moodle external DB enrolment plugin ]&lt;br /&gt;
&lt;br /&gt;
==Implementation notes/ideas==&lt;br /&gt;
* The [http://git.catalyst.net.nz/mnet.git/ PHP mnet library] has been [https://code.edge.launchpad.net/~mnet-maintainers/mnet-wsgi/main ported to python.]&lt;br /&gt;
** SchoolTool will need to use this library.&lt;br /&gt;
* Moodle will need some awareness of SchoolTool in the mnet auth plugin. Not sure yet what this entails. (i.e., Mahara shows up in the list. We need SchoolTool in there, too.)&lt;br /&gt;
* Moodle will need an enrolment plugin that gets data from mnet but is otherwise modeled on the external DB enrolment plugin.&lt;br /&gt;
* Moodle will need a gradebook plugin that can pass grades to SchoolTool via mnet.&lt;br /&gt;
* integration v1.0 will not batch updates from Moodle to SchoolTool. Updates will be small and frequent.&lt;br /&gt;
&lt;br /&gt;
==Use Cases==&lt;br /&gt;
* integration v1.0: Drop SchoolTool into existing Moodle site, leave Moodle as driver of user directory and enrollment management.&lt;br /&gt;
** Accounts manually created in SchoolTool may or may not be integratable with Moodle. (Matt recommends this as a feature, but it should not be required for v1.0.)&lt;br /&gt;
** All course creation and enrollment updates must happen first in Moodle and be transferred from there to SchoolTool.&lt;br /&gt;
** Enrollment can be student-driven.&lt;br /&gt;
** An interactive enrollment in Moodle kicks off an immediate transaction to record the enrollment in schooltool.&lt;br /&gt;
* future integration version only: Drop SchoolTool into existing Moodle site, after bulk data transfer from Moodle-&amp;gt;SchoolTool, flip configuration and use SchoolTool as the authoritative user directory and/or enrollment management system.&lt;br /&gt;
** Could this be used to migrate to SchoolTool from another SIS (integrated somehow with Moodle) by way of Moodle?&lt;br /&gt;
* Start fresh with both.&lt;br /&gt;
* future integration version only: Drop Moodle into SchoolTool site.&lt;br /&gt;
** maybe not important for v1.0, might basically come for free&lt;br /&gt;
* future integration version only: Drop SchoolTool into Mahara site (and vice-versa)&lt;br /&gt;
&#039;&#039;&#039;In summary, integration v1.0 will be a Moodle-&amp;gt;SchoolTool integration. We are laying a foundation for a future bidirectional integration in which sections are created and teachers and enrollments are managed in SchoolTool, while Moodle regularly reports grades back to SchoolTool.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==User Interfaces==&lt;br /&gt;
* The integration configuration interfaces will be modeled on the existing interfaces for integrating Moodle and Mahara. See this document for a characterization of the type of admin user experience we want: [http://eduforge.org/docman/view.php/176/3200/Mahoodle.pdf Mahoodle.pdf]&lt;br /&gt;
* Moodle UIs&lt;br /&gt;
** Auth plugin config&lt;br /&gt;
** Enrolment plugin config&lt;br /&gt;
** Grade export config&lt;br /&gt;
* SchoolTool UIs&lt;br /&gt;
** similar division of config screens&lt;br /&gt;
** equivalent of Moodle&#039;s &amp;quot;Network Servers&amp;quot; block with links to SSO peers&lt;br /&gt;
** equivalent of &amp;quot;You have logged in from &amp;lt;somelink&amp;gt;&amp;quot; to go back after SSO&lt;br /&gt;
&lt;br /&gt;
==Mnet==&lt;br /&gt;
* What, in summary, does MNET provide?&lt;br /&gt;
** MNET is an XMLRPC implementation that dispatches messages to applications on either side (with a convention for function naming).&lt;br /&gt;
** MNET has a security layer that enforces that every message is encrypted and signed (with regular key rotation).&lt;br /&gt;
** MNET provides a core set of modules to provide common functionality such as SSO, key discovery, ping, and course enrollment.&lt;br /&gt;
&lt;br /&gt;
===Moodle mnet Interfaces===&lt;br /&gt;
* existing: SSO IDP interfaces&lt;br /&gt;
** in integration v1.0, SchoolTool will only be a Service Provider and Moodle will always be the IDentity Provider&lt;br /&gt;
** returns user data sufficient to create account&lt;br /&gt;
* list_user_enrolments(user)&lt;br /&gt;
** returns a list of all enrolments for a given user&lt;br /&gt;
** SchoolTool may call this to get enrolment data ASAP when an unknown user authenticates and an account is created using user_authorise()&lt;br /&gt;
&lt;br /&gt;
===SchoolTool mnet Interfaces===&lt;br /&gt;
* fetch_user(userdata)&lt;br /&gt;
** tell SchoolTool to ask Moodle for one user&#039;s data&lt;br /&gt;
** userdata: associative array such as:&lt;br /&gt;
*** username=&amp;gt;moquist&lt;br /&gt;
*** firstname=&amp;gt;Matt&lt;br /&gt;
*** lastname=&amp;gt;Oquist&lt;br /&gt;
*** idnumber=&amp;gt;1234457 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** email=&amp;gt;moquist@majen.net&lt;br /&gt;
*** password_hash=&amp;gt;234lih23rlh2asldfjas&lt;br /&gt;
*** password_hash_algorithm=&amp;gt;md5&lt;br /&gt;
*** ircnick=&amp;gt;moquist&lt;br /&gt;
*** arbitrary_field=&amp;gt;arbitrary_data_string...&lt;br /&gt;
**** SchoolTool only cares about enough to create a login account.&lt;br /&gt;
**** SchoolTool does not care about student-editable profile fields.&lt;br /&gt;
* new_section(sectiondata)&lt;br /&gt;
** sectiondata: associative array such as:&lt;br /&gt;
*** name=&amp;gt;&amp;quot;Algebra 1 V1 Mrs. Smith: Cats and their Affectations&amp;quot;&lt;br /&gt;
*** idnumber=&amp;gt;197423 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** teacheridnumber=&amp;gt;987234 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** segment=&amp;gt;1 # a section may have more than one semester/segment/term(?)&lt;br /&gt;
* new_enrolment(enrolmentdata)&lt;br /&gt;
** create new association between user &amp;amp; section&lt;br /&gt;
** enrolmentdata: associative array such as:&lt;br /&gt;
*** sectionid=&amp;gt;197423 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** userid=&amp;gt;987234 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** role=&amp;gt;&#039;teacher&#039; # only &#039;student&#039; and &#039;teacher&#039; supported in integration v1.0&lt;br /&gt;
* new_assessment(assessmentdata)&lt;br /&gt;
** create new assessment to be displayed in grade reports&lt;br /&gt;
** assessmentdata: associative array such as:&lt;br /&gt;
*** sectionid=&amp;gt;197423 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** name=&amp;gt;&amp;quot;How to grill a logarithmic sandwich&amp;quot;&lt;br /&gt;
*** idnumber=&amp;gt;73743734 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** chapternum=&amp;gt;3&lt;br /&gt;
*** honors_required=&amp;gt;false&lt;br /&gt;
*** nonhonors_required=&amp;gt;true&lt;br /&gt;
*** extra_credit=&amp;gt;false&lt;br /&gt;
*** pointval=&amp;gt;68&lt;br /&gt;
* new_grade(gradedata)&lt;br /&gt;
** make entry in gradebook&lt;br /&gt;
** gradedata: associative array such as:&lt;br /&gt;
*** assessmentid=&amp;gt;73743734&lt;br /&gt;
*** userid=&amp;gt;2347234 # unique shared ID of student&lt;br /&gt;
*** points_earned=&amp;gt;62&lt;br /&gt;
*** excepted=&amp;gt;false&lt;br /&gt;
*** attempt_num=&amp;gt;1 # if multiple attempts are allowed&lt;br /&gt;
&lt;br /&gt;
==Phase 2==&lt;br /&gt;
* Some discussion is taking place [http://moodle.org/mod/forum/discuss.php?d=129267 here].&lt;br /&gt;
===Scenarios===&lt;br /&gt;
# Susie Sunglasses will return to Town High School for her senior year. During the last week of school in her junior year, she sits down in the computer lab, logs into Moodle, and enrolls herself in each of the 5 courses she wishes to take during the fall semester. Moodle sends information about these enrollments to SchoolTool, and when THS principal Patricia Participle logs in to SchoolTool in July she is able to see which courses Susie will be taking in the fall.&lt;br /&gt;
#:[https://docs.moodle.org/en/images_en/d/d1/Susie-and-patricia.dia Susie-and-patricia.dia source file]&lt;br /&gt;
#:[[Image:Susie-and-patricia.png|300px]]&lt;br /&gt;
# Tommy Trackstar is a new student at Town High School. He consults immediately with guidance counselor Guinevere, who logs into Moodle and enrolls him in all his chosen courses. As Tommy completes his work and grades are given (some automatically and some manually by the teacher) in Moodle, each grade is also transferred to SchoolTool, which is thereby able to generate an up-to-date progress report for Tommy at any desired point in time (past or present).&lt;br /&gt;
#:[https://docs.moodle.org/en/images_en/a/af/Tommy-and-guinevere1.dia Tommy-and-guinevere1.dia source file]&lt;br /&gt;
#:[[Image:Tommy-and-guinevere1.png|500px]]&lt;br /&gt;
# Track season comes around, and Tommy gets too busy with practice. After careful consideration of all his available options, Tommy decides to drop Mathematics of Whistling to have an extra hour to run each day. Either he or guidance counselor Guinevere unenrolls him in Moodle from Mathematics of Whistling. The unenrollment is transferred directly to SchoolTool, and Guinevere is able to enter a note and a withdrawal code to explain what happened. This withdrawal is then included on Tommy&#039;s transcript.&lt;br /&gt;
#:[https://docs.moodle.org/en/images_en/2/2b/Tommy-and-guinevere2.dia Tommy-and-guinevere2.dia source file]&lt;br /&gt;
#:[[Image:Tommy-and-guinevere2.png|500px]]&lt;br /&gt;
# Samantha Stupenda, widely rumored to be the most demanding science teacher at THS, has developed assignments for the newest chapter of the textbook she&#039;s writing (&amp;quot;Earth Science Internalized: No Escape&amp;quot;). Samantha adds each of these assignments to her course in Moodle. As she adds each assignment, it is transferred to SchoolTool as a grade item for the section, and SchoolTool will be prepared to accept grade data for each student enrolled in Samantha&#039;s course.&lt;br /&gt;
#:[https://docs.moodle.org/en/images_en/5/56/Samantha1.dia Samantha1.dia source file]&lt;br /&gt;
#:[[Image:Samantha1.png|500px]]&lt;br /&gt;
# Vera Vestibule is taking Bubble Blowing 101, which has no Moodle component at all. Guidance counselor Guinevere logs into SchoolTool and 1) creates a course (&amp;quot;Bubble Blowing 101&amp;quot;), 2) creates a section of the course (&amp;quot;Bubble Blowing 101 taught by Chewie Chomper&amp;quot;), and 3) enrolls Vera in the section. Chewie uploads in SchoolTool a spreadsheet specifying the gradeable assignments in the course. As his students complete the assignments, Chewie enters their grades in SchoolTool, which is then able to include this course and these grades in student progress reports and transcripts.&lt;br /&gt;
#:[https://docs.moodle.org/en/images_en/d/d1/Vera.dia Vera.dia source file]&lt;br /&gt;
#:[[Image:Vera.png|300px]]&lt;br /&gt;
# Samantha Stupenda also teaches Chemistry. All her class assignments are graded in Moodle, and those grades transfer automatically to SchoolTool. But her lab assignments are not in Moodle, and Samantha creates grade items and enters those grades manually into her Chemistry sections in SchoolTool. Halfway through the school year, Samantha decides to represent those lab assignments in Moodle, and she is careful to use *exactly* the same names that she entered into SchoolTool previously. What happens?&lt;br /&gt;
# Country Mouse High School has been using Moodle for the past 3 years, and many but not all of the teachers have enthusiastically created Moodle courses that they use extensively in their classrooms. However, some teachers do not have a Moodle presence at all. The principal of CMHS, Betsy Balustrade, keeps a collection of spreadsheets and other documents which she uses to plan and manage the class schedule each year. The technology director of CMHS, Cathy Colever, decides to adopt SchoolTool as the Student Information System (SIS) of CMHS. She installs SchoolTool and integrates it with their existing Moodle, and all the information in Moodle about the teachers, students, courses, enrollments, and grades is transferred to SchoolTool. Cathy provides a series of training sessions for Betsy and her administrative assistant Astra Lodge. Since not every course in the school is in Moodle, Astra enters information about some courses, teachers, and student enrollments into SchoolTool manually. After that, Betsy is able to use SchoolTool to create the schedule for each upcoming semester.&lt;br /&gt;
#:[https://docs.moodle.org/en/images_en/d/d1/Country-mouse.dia Country-mouse.dia source file]&lt;br /&gt;
## Phase 2 Part 1: Users&lt;br /&gt;
##:[[Image:Country-mouse1.png|300px]]&lt;br /&gt;
## Phase 2 Part 2: Enrollments&lt;br /&gt;
##:[[Image:Country-mouse2.png|300px]]&lt;br /&gt;
## Phase 2 Part 3: Grades&lt;br /&gt;
##:[[Image:Country-mouse3.png|300px]]&lt;br /&gt;
&lt;br /&gt;
===Flowcharts Because We Like Them===&lt;br /&gt;
* address each of the above scenarios...&lt;br /&gt;
* show technical detail for transfer of user account(s) from Moodle to SchoolTool&lt;br /&gt;
[[Image:SchoolTool_Integration_Userdata.png|200px]]&lt;br /&gt;
* show technical detail for transfer of enrollment(s) from Moodle to SchoolTool&lt;br /&gt;
[[Image:SchoolTool_Integration_Enrollment.png|200px]]&lt;br /&gt;
* show technical detail for transfer of grades(s) from Moodle to SchoolTool&lt;br /&gt;
[[Image:SchoolTool_Integration_Grades.png|200px]]&lt;br /&gt;
&lt;br /&gt;
===Part 1: SSO===&lt;br /&gt;
====Tasks====&lt;br /&gt;
* Moodle (Matt)&lt;br /&gt;
** Make Moodle aware of SchoolTool as a potential SSO peer.&lt;br /&gt;
** Add new auth plugin to send info to SchoolTool.&lt;br /&gt;
* SchoolTool UI+Mnet (Brett)&lt;br /&gt;
** UI: link to configured Moodle peers&lt;br /&gt;
** UI: link back to Moodle after Moodle-&amp;gt;SchoolTool SSO login&lt;br /&gt;
** UI: Mnet SSO configuration (with one or more Moodles)&lt;br /&gt;
*** Consider any configuration of the SSO. Choose sensible defaults, make helpful options modifiable.&lt;br /&gt;
* SchoolTool back-end (Douglas)&lt;br /&gt;
** Accept new user info from any integrated Moodle that calls.&lt;br /&gt;
*** Handle username collisions. (See Mahara &amp;amp; Moodle.)&lt;br /&gt;
*** Consider how user profile fields are handled.&lt;br /&gt;
** Periodically ask for a full-sync with each integrated Moodle.&lt;br /&gt;
&lt;br /&gt;
===Part 2: Enrollments===&lt;br /&gt;
====Tasks====&lt;br /&gt;
===Part 3: Grades===&lt;br /&gt;
====Tasks====&lt;br /&gt;
&lt;br /&gt;
==Misc. TODO==&lt;br /&gt;
* Matt/Tom: Find out what reports ECHS will want from SchoolTool&lt;br /&gt;
&lt;br /&gt;
* SchoolTool TODO list&lt;br /&gt;
** Create an &amp;quot;ongoing section&amp;quot; container that will contain (otherwise normal) sections that do not fit into the year/term schema.&lt;br /&gt;
*** integration v1.0 will place all Moodle-driven sections in the &amp;quot;ongoing&amp;quot; container&lt;br /&gt;
** Add enumerated status field to enrollment (e.g., Active, Withdrawn No Grade, Withdrawn Failing, Passed) This will not initially include a workflow, but simply a current state and a history of states.&lt;br /&gt;
** Add support for section history&lt;br /&gt;
*** grading history&lt;br /&gt;
*** enrollment history (including all enrollment status changes)&lt;br /&gt;
*** teacher history&lt;/div&gt;</summary>
		<author><name>Moquist</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/32/en/index.php?title=Development:SchoolTool_Integration&amp;diff=62012</id>
		<title>Development:SchoolTool Integration</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/32/en/index.php?title=Development:SchoolTool_Integration&amp;diff=62012"/>
		<updated>2009-08-24T01:05:05Z</updated>

		<summary type="html">&lt;p&gt;Moquist: /* Tasks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [http://schooltool.org SchoolTool] SIS project recently released version 1.0, and lots of people could benefit from a solid integration between Moodle and SchoolTool. This page is a work-in-progress specification for the first version of this integration.&lt;br /&gt;
&lt;br /&gt;
==Goal: Moodle-SchoolTool integration modeled on Moodle-Mahara integration.==&lt;br /&gt;
* SchoolTool-Mahara integration should require very little extra effort when this project is complete.&lt;br /&gt;
* SchoolTool+Moodle+Mahara will provide a complete, integrated school administration/learning/portfolio suite that will be easily installable and supportable by time-crunched education systems administrators.&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
* Completely web-based integration configuration (similar to Moodle-Mahara configuration)&lt;br /&gt;
* SSO between SchoolTool and Moodle&lt;br /&gt;
* User accounts, courses, enrolments, assignments, and grades auto-update in SchoolTool&lt;br /&gt;
* Automatic grade transfer from Moodle to SchoolTool&lt;br /&gt;
&lt;br /&gt;
==Integration v1.0 NON-Requirements==&lt;br /&gt;
* Users, courses, enrolments can originate in and be managed within SchoolTool, with Moodle updating from SchoolTool.&lt;br /&gt;
** This will be the goal of the next version of the integration.&lt;br /&gt;
&lt;br /&gt;
==Assumptions==&lt;br /&gt;
* SchoolTool is the authoritative reporting application.&lt;br /&gt;
* Moodle drives all data creation and management.&lt;br /&gt;
&lt;br /&gt;
==Supported versions==&lt;br /&gt;
* SchoolTool 1.0&lt;br /&gt;
* Moodle 1.9.5+&lt;br /&gt;
&lt;br /&gt;
==Terminology Disambiguation==&lt;br /&gt;
* course: A SchoolTool course.&lt;br /&gt;
** SchoolTool &amp;quot;course&amp;quot; has no Moodle analogue. (&amp;quot;Algebra 1&amp;quot;) can have multiple &amp;quot;sections&amp;quot; (&amp;quot;Algebra 1 @ 9:15 taught by Mr. Smith&amp;quot;).&lt;br /&gt;
* section: A SchoolTool section, a Moodle course.&lt;br /&gt;
&lt;br /&gt;
==Background info and references==&lt;br /&gt;
* [https://docs.moodle.org/en/Grades Moodle 1.9+ gradebook]&lt;br /&gt;
* [https://docs.moodle.org/en/External_database Moodle external DB enrolment plugin ]&lt;br /&gt;
&lt;br /&gt;
==Implementation notes/ideas==&lt;br /&gt;
* The [http://git.catalyst.net.nz/mnet.git/ PHP mnet library] has been [https://code.edge.launchpad.net/~mnet-maintainers/mnet-wsgi/main ported to python.]&lt;br /&gt;
** SchoolTool will need to use this library.&lt;br /&gt;
* Moodle will need some awareness of SchoolTool in the mnet auth plugin. Not sure yet what this entails. (i.e., Mahara shows up in the list. We need SchoolTool in there, too.)&lt;br /&gt;
* Moodle will need an enrolment plugin that gets data from mnet but is otherwise modeled on the external DB enrolment plugin.&lt;br /&gt;
* Moodle will need a gradebook plugin that can pass grades to SchoolTool via mnet.&lt;br /&gt;
* integration v1.0 will not batch updates from Moodle to SchoolTool. Updates will be small and frequent.&lt;br /&gt;
&lt;br /&gt;
==Use Cases==&lt;br /&gt;
* integration v1.0: Drop SchoolTool into existing Moodle site, leave Moodle as driver of user directory and enrollment management.&lt;br /&gt;
** Accounts manually created in SchoolTool may or may not be integratable with Moodle. (Matt recommends this as a feature, but it should not be required for v1.0.)&lt;br /&gt;
** All course creation and enrollment updates must happen first in Moodle and be transferred from there to SchoolTool.&lt;br /&gt;
** Enrollment can be student-driven.&lt;br /&gt;
** An interactive enrollment in Moodle kicks off an immediate transaction to record the enrollment in schooltool.&lt;br /&gt;
* future integration version only: Drop SchoolTool into existing Moodle site, after bulk data transfer from Moodle-&amp;gt;SchoolTool, flip configuration and use SchoolTool as the authoritative user directory and/or enrollment management system.&lt;br /&gt;
** Could this be used to migrate to SchoolTool from another SIS (integrated somehow with Moodle) by way of Moodle?&lt;br /&gt;
* Start fresh with both.&lt;br /&gt;
* future integration version only: Drop Moodle into SchoolTool site.&lt;br /&gt;
** maybe not important for v1.0, might basically come for free&lt;br /&gt;
* future integration version only: Drop SchoolTool into Mahara site (and vice-versa)&lt;br /&gt;
&#039;&#039;&#039;In summary, integration v1.0 will be a Moodle-&amp;gt;SchoolTool integration. We are laying a foundation for a future bidirectional integration in which sections are created and teachers and enrollments are managed in SchoolTool, while Moodle regularly reports grades back to SchoolTool.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==User Interfaces==&lt;br /&gt;
* The integration configuration interfaces will be modeled on the existing interfaces for integrating Moodle and Mahara. See this document for a characterization of the type of admin user experience we want: [http://eduforge.org/docman/view.php/176/3200/Mahoodle.pdf Mahoodle.pdf]&lt;br /&gt;
* Moodle UIs&lt;br /&gt;
** Auth plugin config&lt;br /&gt;
** Enrolment plugin config&lt;br /&gt;
** Grade export config&lt;br /&gt;
* SchoolTool UIs&lt;br /&gt;
** similar division of config screens&lt;br /&gt;
** equivalent of Moodle&#039;s &amp;quot;Network Servers&amp;quot; block with links to SSO peers&lt;br /&gt;
** equivalent of &amp;quot;You have logged in from &amp;lt;somelink&amp;gt;&amp;quot; to go back after SSO&lt;br /&gt;
&lt;br /&gt;
==Mnet==&lt;br /&gt;
* What, in summary, does MNET provide?&lt;br /&gt;
** MNET is an XMLRPC implementation that dispatches messages to applications on either side (with a convention for function naming).&lt;br /&gt;
** MNET has a security layer that enforces that every message is encrypted and signed (with regular key rotation).&lt;br /&gt;
** MNET provides a core set of modules to provide common functionality such as SSO, key discovery, ping, and course enrollment.&lt;br /&gt;
&lt;br /&gt;
===Moodle mnet Interfaces===&lt;br /&gt;
* existing: SSO IDP interfaces&lt;br /&gt;
** in integration v1.0, SchoolTool will only be a Service Provider and Moodle will always be the IDentity Provider&lt;br /&gt;
** returns user data sufficient to create account&lt;br /&gt;
* list_user_enrolments(user)&lt;br /&gt;
** returns a list of all enrolments for a given user&lt;br /&gt;
** SchoolTool may call this to get enrolment data ASAP when an unknown user authenticates and an account is created using user_authorise()&lt;br /&gt;
&lt;br /&gt;
===SchoolTool mnet Interfaces===&lt;br /&gt;
* fetch_user(userdata)&lt;br /&gt;
** tell SchoolTool to ask Moodle for one user&#039;s data&lt;br /&gt;
** userdata: associative array such as:&lt;br /&gt;
*** username=&amp;gt;moquist&lt;br /&gt;
*** firstname=&amp;gt;Matt&lt;br /&gt;
*** lastname=&amp;gt;Oquist&lt;br /&gt;
*** idnumber=&amp;gt;1234457 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** email=&amp;gt;moquist@majen.net&lt;br /&gt;
*** password_hash=&amp;gt;234lih23rlh2asldfjas&lt;br /&gt;
*** password_hash_algorithm=&amp;gt;md5&lt;br /&gt;
*** ircnick=&amp;gt;moquist&lt;br /&gt;
*** arbitrary_field=&amp;gt;arbitrary_data_string...&lt;br /&gt;
**** SchoolTool only cares about enough to create a login account.&lt;br /&gt;
**** SchoolTool does not care about student-editable profile fields.&lt;br /&gt;
* new_section(sectiondata)&lt;br /&gt;
** sectiondata: associative array such as:&lt;br /&gt;
*** name=&amp;gt;&amp;quot;Algebra 1 V1 Mrs. Smith: Cats and their Affectations&amp;quot;&lt;br /&gt;
*** idnumber=&amp;gt;197423 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** teacheridnumber=&amp;gt;987234 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** segment=&amp;gt;1 # a section may have more than one semester/segment/term(?)&lt;br /&gt;
* new_enrolment(enrolmentdata)&lt;br /&gt;
** create new association between user &amp;amp; section&lt;br /&gt;
** enrolmentdata: associative array such as:&lt;br /&gt;
*** sectionid=&amp;gt;197423 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** userid=&amp;gt;987234 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** role=&amp;gt;&#039;teacher&#039; # only &#039;student&#039; and &#039;teacher&#039; supported in integration v1.0&lt;br /&gt;
* new_assessment(assessmentdata)&lt;br /&gt;
** create new assessment to be displayed in grade reports&lt;br /&gt;
** assessmentdata: associative array such as:&lt;br /&gt;
*** sectionid=&amp;gt;197423 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** name=&amp;gt;&amp;quot;How to grill a logarithmic sandwich&amp;quot;&lt;br /&gt;
*** idnumber=&amp;gt;73743734 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** chapternum=&amp;gt;3&lt;br /&gt;
*** honors_required=&amp;gt;false&lt;br /&gt;
*** nonhonors_required=&amp;gt;true&lt;br /&gt;
*** extra_credit=&amp;gt;false&lt;br /&gt;
*** pointval=&amp;gt;68&lt;br /&gt;
* new_grade(gradedata)&lt;br /&gt;
** make entry in gradebook&lt;br /&gt;
** gradedata: associative array such as:&lt;br /&gt;
*** assessmentid=&amp;gt;73743734&lt;br /&gt;
*** userid=&amp;gt;2347234 # unique shared ID of student&lt;br /&gt;
*** points_earned=&amp;gt;62&lt;br /&gt;
*** excepted=&amp;gt;false&lt;br /&gt;
*** attempt_num=&amp;gt;1 # if multiple attempts are allowed&lt;br /&gt;
&lt;br /&gt;
==Phase 2==&lt;br /&gt;
* Some discussion is taking place [http://moodle.org/mod/forum/discuss.php?d=129267 here].&lt;br /&gt;
===Scenarios===&lt;br /&gt;
# Susie Sunglasses will return to Town High School for her senior year. During the last week of school in her junior year, she sits down in the computer lab, logs into Moodle, and enrolls herself in each of the 5 courses she wishes to take during the fall semester. Moodle sends information about these enrollments to SchoolTool, and when THS principal Patricia Participle logs in to SchoolTool in July she is able to see which courses Susie will be taking in the fall.&lt;br /&gt;
#:[https://docs.moodle.org/en/images_en/d/d1/Susie-and-patricia.dia Susie-and-patricia.dia source file]&lt;br /&gt;
#:[[Image:Susie-and-patricia.png|300px]]&lt;br /&gt;
# Tommy Trackstar is a new student at Town High School. He consults immediately with guidance counselor Guinevere, who logs into Moodle and enrolls him in all his chosen courses. As Tommy completes his work and grades are given (some automatically and some manually by the teacher) in Moodle, each grade is also transferred to SchoolTool, which is thereby able to generate an up-to-date progress report for Tommy at any desired point in time (past or present).&lt;br /&gt;
#:[https://docs.moodle.org/en/images_en/a/af/Tommy-and-guinevere1.dia Tommy-and-guinevere1.dia source file]&lt;br /&gt;
#:[[Image:Tommy-and-guinevere1.png|500px]]&lt;br /&gt;
# Track season comes around, and Tommy gets too busy with practice. After careful consideration of all his available options, Tommy decides to drop Mathematics of Whistling to have an extra hour to run each day. Either he or guidance counselor Guinevere unenrolls him in Moodle from Mathematics of Whistling. The unenrollment is transferred directly to SchoolTool, and Guinevere is able to enter a note and a withdrawal code to explain what happened. This withdrawal is then included on Tommy&#039;s transcript.&lt;br /&gt;
#:[https://docs.moodle.org/en/images_en/2/2b/Tommy-and-guinevere2.dia Tommy-and-guinevere2.dia source file]&lt;br /&gt;
#:[[Image:Tommy-and-guinevere2.png|500px]]&lt;br /&gt;
# Samantha Stupenda, widely rumored to be the most demanding science teacher at THS, has developed assignments for the newest chapter of the textbook she&#039;s writing (&amp;quot;Earth Science Internalized: No Escape&amp;quot;). Samantha adds each of these assignments to her course in Moodle. As she adds each assignment, it is transferred to SchoolTool as a grade item for the section, and SchoolTool will be prepared to accept grade data for each student enrolled in Samantha&#039;s course.&lt;br /&gt;
#:[https://docs.moodle.org/en/images_en/5/56/Samantha1.dia Samantha1.dia source file]&lt;br /&gt;
#:[[Image:Samantha1.png|500px]]&lt;br /&gt;
# Vera Vestibule is taking Bubble Blowing 101, which has no Moodle component at all. Guidance counselor Guinevere logs into SchoolTool and 1) creates a course (&amp;quot;Bubble Blowing 101&amp;quot;), 2) creates a section of the course (&amp;quot;Bubble Blowing 101 taught by Chewie Chomper&amp;quot;), and 3) enrolls Vera in the section. Chewie uploads in SchoolTool a spreadsheet specifying the gradeable assignments in the course. As his students complete the assignments, Chewie enters their grades in SchoolTool, which is then able to include this course and these grades in student progress reports and transcripts.&lt;br /&gt;
#:[https://docs.moodle.org/en/images_en/d/d1/Vera.dia Vera.dia source file]&lt;br /&gt;
#:[[Image:Vera.png|300px]]&lt;br /&gt;
# Samantha Stupenda also teaches Chemistry. All her class assignments are graded in Moodle, and those grades transfer automatically to SchoolTool. But her lab assignments are not in Moodle, and Samantha creates grade items and enters those grades manually into her Chemistry sections in SchoolTool. Halfway through the school year, Samantha decides to represent those lab assignments in Moodle, and she is careful to use *exactly* the same names that she entered into SchoolTool previously. What happens?&lt;br /&gt;
# Country Mouse High School has been using Moodle for the past 3 years, and many but not all of the teachers have enthusiastically created Moodle courses that they use extensively in their classrooms. However, some teachers do not have a Moodle presence at all. The principal of CMHS, Betsy Balustrade, keeps a collection of spreadsheets and other documents which she uses to plan and manage the class schedule each year. The technology director of CMHS, Cathy Colever, decides to adopt SchoolTool as the Student Information System (SIS) of CMHS. She installs SchoolTool and integrates it with their existing Moodle, and all the information in Moodle about the teachers, students, courses, enrollments, and grades is transferred to SchoolTool. Cathy provides a series of training sessions for Betsy and her administrative assistant Astra Lodge. Since not every course in the school is in Moodle, Astra enters information about some courses, teachers, and student enrollments into SchoolTool manually. After that, Betsy is able to use SchoolTool to create the schedule for each upcoming semester.&lt;br /&gt;
#:[https://docs.moodle.org/en/images_en/d/d1/Country-mouse.dia Country-mouse.dia source file]&lt;br /&gt;
## Phase 2 Part 1: Users&lt;br /&gt;
##:[[Image:Country-mouse1.png|300px]]&lt;br /&gt;
## Phase 2 Part 2: Enrollments&lt;br /&gt;
##:[[Image:Country-mouse2.png|300px]]&lt;br /&gt;
## Phase 2 Part 3: Grades&lt;br /&gt;
##:[[Image:Country-mouse3.png|300px]]&lt;br /&gt;
&lt;br /&gt;
===Flowcharts Because We Like Them===&lt;br /&gt;
* address each of the above scenarios...&lt;br /&gt;
* show technical detail for transfer of user account(s) from Moodle to SchoolTool&lt;br /&gt;
[[Image:SchoolTool_Integration_Userdata.png|200px]]&lt;br /&gt;
* show technical detail for transfer of enrollment(s) from Moodle to SchoolTool&lt;br /&gt;
[[Image:SchoolTool_Integration_Enrollment.png|200px]]&lt;br /&gt;
* show technical detail for transfer of grades(s) from Moodle to SchoolTool&lt;br /&gt;
[[Image:SchoolTool_Integration_Grades.png|200px]]&lt;br /&gt;
&lt;br /&gt;
===Part 1: SSO===&lt;br /&gt;
====Tasks====&lt;br /&gt;
* Moodle (Matt)&lt;br /&gt;
** Make Moodle aware of SchoolTool as a potential SSO peer&lt;br /&gt;
* SchoolTool UI+Mnet (Brett)&lt;br /&gt;
** UI: link to configured Moodle peers&lt;br /&gt;
** UI: link back to Moodle after Moodle-&amp;gt;SchoolTool SSO login&lt;br /&gt;
** UI: Mnet SSO configuration (with one or more Moodles)&lt;br /&gt;
*** Consider any configuration of the SSO. Choose sensible defaults, make helpful options modifiable.&lt;br /&gt;
* SchoolTool back-end (Douglas)&lt;br /&gt;
** Accept new user info from any integrated Moodle that calls.&lt;br /&gt;
** Handle username collisions. (See Mahara &amp;amp; Moodle.)&lt;br /&gt;
** Consider how user profile fields are handled.&lt;br /&gt;
** Periodically ask for a full-sync with each integrated Moodle.&lt;br /&gt;
&lt;br /&gt;
===Part 2: Enrollments===&lt;br /&gt;
====Tasks====&lt;br /&gt;
===Part 3: Grades===&lt;br /&gt;
====Tasks====&lt;br /&gt;
&lt;br /&gt;
==Misc. TODO==&lt;br /&gt;
* Matt/Tom: Find out what reports ECHS will want from SchoolTool&lt;br /&gt;
&lt;br /&gt;
* SchoolTool TODO list&lt;br /&gt;
** Create an &amp;quot;ongoing section&amp;quot; container that will contain (otherwise normal) sections that do not fit into the year/term schema.&lt;br /&gt;
*** integration v1.0 will place all Moodle-driven sections in the &amp;quot;ongoing&amp;quot; container&lt;br /&gt;
** Add enumerated status field to enrollment (e.g., Active, Withdrawn No Grade, Withdrawn Failing, Passed) This will not initially include a workflow, but simply a current state and a history of states.&lt;br /&gt;
** Add support for section history&lt;br /&gt;
*** grading history&lt;br /&gt;
*** enrollment history (including all enrollment status changes)&lt;br /&gt;
*** teacher history&lt;/div&gt;</summary>
		<author><name>Moquist</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/32/en/index.php?title=Development:SchoolTool_Integration&amp;diff=62011</id>
		<title>Development:SchoolTool Integration</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/32/en/index.php?title=Development:SchoolTool_Integration&amp;diff=62011"/>
		<updated>2009-08-24T00:35:38Z</updated>

		<summary type="html">&lt;p&gt;Moquist: /* Scenarios */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [http://schooltool.org SchoolTool] SIS project recently released version 1.0, and lots of people could benefit from a solid integration between Moodle and SchoolTool. This page is a work-in-progress specification for the first version of this integration.&lt;br /&gt;
&lt;br /&gt;
==Goal: Moodle-SchoolTool integration modeled on Moodle-Mahara integration.==&lt;br /&gt;
* SchoolTool-Mahara integration should require very little extra effort when this project is complete.&lt;br /&gt;
* SchoolTool+Moodle+Mahara will provide a complete, integrated school administration/learning/portfolio suite that will be easily installable and supportable by time-crunched education systems administrators.&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
* Completely web-based integration configuration (similar to Moodle-Mahara configuration)&lt;br /&gt;
* SSO between SchoolTool and Moodle&lt;br /&gt;
* User accounts, courses, enrolments, assignments, and grades auto-update in SchoolTool&lt;br /&gt;
* Automatic grade transfer from Moodle to SchoolTool&lt;br /&gt;
&lt;br /&gt;
==Integration v1.0 NON-Requirements==&lt;br /&gt;
* Users, courses, enrolments can originate in and be managed within SchoolTool, with Moodle updating from SchoolTool.&lt;br /&gt;
** This will be the goal of the next version of the integration.&lt;br /&gt;
&lt;br /&gt;
==Assumptions==&lt;br /&gt;
* SchoolTool is the authoritative reporting application.&lt;br /&gt;
* Moodle drives all data creation and management.&lt;br /&gt;
&lt;br /&gt;
==Supported versions==&lt;br /&gt;
* SchoolTool 1.0&lt;br /&gt;
* Moodle 1.9.5+&lt;br /&gt;
&lt;br /&gt;
==Terminology Disambiguation==&lt;br /&gt;
* course: A SchoolTool course.&lt;br /&gt;
** SchoolTool &amp;quot;course&amp;quot; has no Moodle analogue. (&amp;quot;Algebra 1&amp;quot;) can have multiple &amp;quot;sections&amp;quot; (&amp;quot;Algebra 1 @ 9:15 taught by Mr. Smith&amp;quot;).&lt;br /&gt;
* section: A SchoolTool section, a Moodle course.&lt;br /&gt;
&lt;br /&gt;
==Background info and references==&lt;br /&gt;
* [https://docs.moodle.org/en/Grades Moodle 1.9+ gradebook]&lt;br /&gt;
* [https://docs.moodle.org/en/External_database Moodle external DB enrolment plugin ]&lt;br /&gt;
&lt;br /&gt;
==Implementation notes/ideas==&lt;br /&gt;
* The [http://git.catalyst.net.nz/mnet.git/ PHP mnet library] has been [https://code.edge.launchpad.net/~mnet-maintainers/mnet-wsgi/main ported to python.]&lt;br /&gt;
** SchoolTool will need to use this library.&lt;br /&gt;
* Moodle will need some awareness of SchoolTool in the mnet auth plugin. Not sure yet what this entails. (i.e., Mahara shows up in the list. We need SchoolTool in there, too.)&lt;br /&gt;
* Moodle will need an enrolment plugin that gets data from mnet but is otherwise modeled on the external DB enrolment plugin.&lt;br /&gt;
* Moodle will need a gradebook plugin that can pass grades to SchoolTool via mnet.&lt;br /&gt;
* integration v1.0 will not batch updates from Moodle to SchoolTool. Updates will be small and frequent.&lt;br /&gt;
&lt;br /&gt;
==Use Cases==&lt;br /&gt;
* integration v1.0: Drop SchoolTool into existing Moodle site, leave Moodle as driver of user directory and enrollment management.&lt;br /&gt;
** Accounts manually created in SchoolTool may or may not be integratable with Moodle. (Matt recommends this as a feature, but it should not be required for v1.0.)&lt;br /&gt;
** All course creation and enrollment updates must happen first in Moodle and be transferred from there to SchoolTool.&lt;br /&gt;
** Enrollment can be student-driven.&lt;br /&gt;
** An interactive enrollment in Moodle kicks off an immediate transaction to record the enrollment in schooltool.&lt;br /&gt;
* future integration version only: Drop SchoolTool into existing Moodle site, after bulk data transfer from Moodle-&amp;gt;SchoolTool, flip configuration and use SchoolTool as the authoritative user directory and/or enrollment management system.&lt;br /&gt;
** Could this be used to migrate to SchoolTool from another SIS (integrated somehow with Moodle) by way of Moodle?&lt;br /&gt;
* Start fresh with both.&lt;br /&gt;
* future integration version only: Drop Moodle into SchoolTool site.&lt;br /&gt;
** maybe not important for v1.0, might basically come for free&lt;br /&gt;
* future integration version only: Drop SchoolTool into Mahara site (and vice-versa)&lt;br /&gt;
&#039;&#039;&#039;In summary, integration v1.0 will be a Moodle-&amp;gt;SchoolTool integration. We are laying a foundation for a future bidirectional integration in which sections are created and teachers and enrollments are managed in SchoolTool, while Moodle regularly reports grades back to SchoolTool.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==User Interfaces==&lt;br /&gt;
* The integration configuration interfaces will be modeled on the existing interfaces for integrating Moodle and Mahara. See this document for a characterization of the type of admin user experience we want: [http://eduforge.org/docman/view.php/176/3200/Mahoodle.pdf Mahoodle.pdf]&lt;br /&gt;
* Moodle UIs&lt;br /&gt;
** Auth plugin config&lt;br /&gt;
** Enrolment plugin config&lt;br /&gt;
** Grade export config&lt;br /&gt;
* SchoolTool UIs&lt;br /&gt;
** similar division of config screens&lt;br /&gt;
** equivalent of Moodle&#039;s &amp;quot;Network Servers&amp;quot; block with links to SSO peers&lt;br /&gt;
** equivalent of &amp;quot;You have logged in from &amp;lt;somelink&amp;gt;&amp;quot; to go back after SSO&lt;br /&gt;
&lt;br /&gt;
==Mnet==&lt;br /&gt;
* What, in summary, does MNET provide?&lt;br /&gt;
** MNET is an XMLRPC implementation that dispatches messages to applications on either side (with a convention for function naming).&lt;br /&gt;
** MNET has a security layer that enforces that every message is encrypted and signed (with regular key rotation).&lt;br /&gt;
** MNET provides a core set of modules to provide common functionality such as SSO, key discovery, ping, and course enrollment.&lt;br /&gt;
&lt;br /&gt;
===Moodle mnet Interfaces===&lt;br /&gt;
* existing: SSO IDP interfaces&lt;br /&gt;
** in integration v1.0, SchoolTool will only be a Service Provider and Moodle will always be the IDentity Provider&lt;br /&gt;
** returns user data sufficient to create account&lt;br /&gt;
* list_user_enrolments(user)&lt;br /&gt;
** returns a list of all enrolments for a given user&lt;br /&gt;
** SchoolTool may call this to get enrolment data ASAP when an unknown user authenticates and an account is created using user_authorise()&lt;br /&gt;
&lt;br /&gt;
===SchoolTool mnet Interfaces===&lt;br /&gt;
* fetch_user(userdata)&lt;br /&gt;
** tell SchoolTool to ask Moodle for one user&#039;s data&lt;br /&gt;
** userdata: associative array such as:&lt;br /&gt;
*** username=&amp;gt;moquist&lt;br /&gt;
*** firstname=&amp;gt;Matt&lt;br /&gt;
*** lastname=&amp;gt;Oquist&lt;br /&gt;
*** idnumber=&amp;gt;1234457 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** email=&amp;gt;moquist@majen.net&lt;br /&gt;
*** password_hash=&amp;gt;234lih23rlh2asldfjas&lt;br /&gt;
*** password_hash_algorithm=&amp;gt;md5&lt;br /&gt;
*** ircnick=&amp;gt;moquist&lt;br /&gt;
*** arbitrary_field=&amp;gt;arbitrary_data_string...&lt;br /&gt;
**** SchoolTool only cares about enough to create a login account.&lt;br /&gt;
**** SchoolTool does not care about student-editable profile fields.&lt;br /&gt;
* new_section(sectiondata)&lt;br /&gt;
** sectiondata: associative array such as:&lt;br /&gt;
*** name=&amp;gt;&amp;quot;Algebra 1 V1 Mrs. Smith: Cats and their Affectations&amp;quot;&lt;br /&gt;
*** idnumber=&amp;gt;197423 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** teacheridnumber=&amp;gt;987234 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** segment=&amp;gt;1 # a section may have more than one semester/segment/term(?)&lt;br /&gt;
* new_enrolment(enrolmentdata)&lt;br /&gt;
** create new association between user &amp;amp; section&lt;br /&gt;
** enrolmentdata: associative array such as:&lt;br /&gt;
*** sectionid=&amp;gt;197423 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** userid=&amp;gt;987234 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** role=&amp;gt;&#039;teacher&#039; # only &#039;student&#039; and &#039;teacher&#039; supported in integration v1.0&lt;br /&gt;
* new_assessment(assessmentdata)&lt;br /&gt;
** create new assessment to be displayed in grade reports&lt;br /&gt;
** assessmentdata: associative array such as:&lt;br /&gt;
*** sectionid=&amp;gt;197423 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** name=&amp;gt;&amp;quot;How to grill a logarithmic sandwich&amp;quot;&lt;br /&gt;
*** idnumber=&amp;gt;73743734 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** chapternum=&amp;gt;3&lt;br /&gt;
*** honors_required=&amp;gt;false&lt;br /&gt;
*** nonhonors_required=&amp;gt;true&lt;br /&gt;
*** extra_credit=&amp;gt;false&lt;br /&gt;
*** pointval=&amp;gt;68&lt;br /&gt;
* new_grade(gradedata)&lt;br /&gt;
** make entry in gradebook&lt;br /&gt;
** gradedata: associative array such as:&lt;br /&gt;
*** assessmentid=&amp;gt;73743734&lt;br /&gt;
*** userid=&amp;gt;2347234 # unique shared ID of student&lt;br /&gt;
*** points_earned=&amp;gt;62&lt;br /&gt;
*** excepted=&amp;gt;false&lt;br /&gt;
*** attempt_num=&amp;gt;1 # if multiple attempts are allowed&lt;br /&gt;
&lt;br /&gt;
==Phase 2==&lt;br /&gt;
* Some discussion is taking place [http://moodle.org/mod/forum/discuss.php?d=129267 here].&lt;br /&gt;
===Scenarios===&lt;br /&gt;
# Susie Sunglasses will return to Town High School for her senior year. During the last week of school in her junior year, she sits down in the computer lab, logs into Moodle, and enrolls herself in each of the 5 courses she wishes to take during the fall semester. Moodle sends information about these enrollments to SchoolTool, and when THS principal Patricia Participle logs in to SchoolTool in July she is able to see which courses Susie will be taking in the fall.&lt;br /&gt;
#:[https://docs.moodle.org/en/images_en/d/d1/Susie-and-patricia.dia Susie-and-patricia.dia source file]&lt;br /&gt;
#:[[Image:Susie-and-patricia.png|300px]]&lt;br /&gt;
# Tommy Trackstar is a new student at Town High School. He consults immediately with guidance counselor Guinevere, who logs into Moodle and enrolls him in all his chosen courses. As Tommy completes his work and grades are given (some automatically and some manually by the teacher) in Moodle, each grade is also transferred to SchoolTool, which is thereby able to generate an up-to-date progress report for Tommy at any desired point in time (past or present).&lt;br /&gt;
#:[https://docs.moodle.org/en/images_en/a/af/Tommy-and-guinevere1.dia Tommy-and-guinevere1.dia source file]&lt;br /&gt;
#:[[Image:Tommy-and-guinevere1.png|500px]]&lt;br /&gt;
# Track season comes around, and Tommy gets too busy with practice. After careful consideration of all his available options, Tommy decides to drop Mathematics of Whistling to have an extra hour to run each day. Either he or guidance counselor Guinevere unenrolls him in Moodle from Mathematics of Whistling. The unenrollment is transferred directly to SchoolTool, and Guinevere is able to enter a note and a withdrawal code to explain what happened. This withdrawal is then included on Tommy&#039;s transcript.&lt;br /&gt;
#:[https://docs.moodle.org/en/images_en/2/2b/Tommy-and-guinevere2.dia Tommy-and-guinevere2.dia source file]&lt;br /&gt;
#:[[Image:Tommy-and-guinevere2.png|500px]]&lt;br /&gt;
# Samantha Stupenda, widely rumored to be the most demanding science teacher at THS, has developed assignments for the newest chapter of the textbook she&#039;s writing (&amp;quot;Earth Science Internalized: No Escape&amp;quot;). Samantha adds each of these assignments to her course in Moodle. As she adds each assignment, it is transferred to SchoolTool as a grade item for the section, and SchoolTool will be prepared to accept grade data for each student enrolled in Samantha&#039;s course.&lt;br /&gt;
#:[https://docs.moodle.org/en/images_en/5/56/Samantha1.dia Samantha1.dia source file]&lt;br /&gt;
#:[[Image:Samantha1.png|500px]]&lt;br /&gt;
# Vera Vestibule is taking Bubble Blowing 101, which has no Moodle component at all. Guidance counselor Guinevere logs into SchoolTool and 1) creates a course (&amp;quot;Bubble Blowing 101&amp;quot;), 2) creates a section of the course (&amp;quot;Bubble Blowing 101 taught by Chewie Chomper&amp;quot;), and 3) enrolls Vera in the section. Chewie uploads in SchoolTool a spreadsheet specifying the gradeable assignments in the course. As his students complete the assignments, Chewie enters their grades in SchoolTool, which is then able to include this course and these grades in student progress reports and transcripts.&lt;br /&gt;
#:[https://docs.moodle.org/en/images_en/d/d1/Vera.dia Vera.dia source file]&lt;br /&gt;
#:[[Image:Vera.png|300px]]&lt;br /&gt;
# Samantha Stupenda also teaches Chemistry. All her class assignments are graded in Moodle, and those grades transfer automatically to SchoolTool. But her lab assignments are not in Moodle, and Samantha creates grade items and enters those grades manually into her Chemistry sections in SchoolTool. Halfway through the school year, Samantha decides to represent those lab assignments in Moodle, and she is careful to use *exactly* the same names that she entered into SchoolTool previously. What happens?&lt;br /&gt;
# Country Mouse High School has been using Moodle for the past 3 years, and many but not all of the teachers have enthusiastically created Moodle courses that they use extensively in their classrooms. However, some teachers do not have a Moodle presence at all. The principal of CMHS, Betsy Balustrade, keeps a collection of spreadsheets and other documents which she uses to plan and manage the class schedule each year. The technology director of CMHS, Cathy Colever, decides to adopt SchoolTool as the Student Information System (SIS) of CMHS. She installs SchoolTool and integrates it with their existing Moodle, and all the information in Moodle about the teachers, students, courses, enrollments, and grades is transferred to SchoolTool. Cathy provides a series of training sessions for Betsy and her administrative assistant Astra Lodge. Since not every course in the school is in Moodle, Astra enters information about some courses, teachers, and student enrollments into SchoolTool manually. After that, Betsy is able to use SchoolTool to create the schedule for each upcoming semester.&lt;br /&gt;
#:[https://docs.moodle.org/en/images_en/d/d1/Country-mouse.dia Country-mouse.dia source file]&lt;br /&gt;
## Phase 2 Part 1: Users&lt;br /&gt;
##:[[Image:Country-mouse1.png|300px]]&lt;br /&gt;
## Phase 2 Part 2: Enrollments&lt;br /&gt;
##:[[Image:Country-mouse2.png|300px]]&lt;br /&gt;
## Phase 2 Part 3: Grades&lt;br /&gt;
##:[[Image:Country-mouse3.png|300px]]&lt;br /&gt;
&lt;br /&gt;
===Flowcharts Because We Like Them===&lt;br /&gt;
* address each of the above scenarios...&lt;br /&gt;
* show technical detail for transfer of user account(s) from Moodle to SchoolTool&lt;br /&gt;
[[Image:SchoolTool_Integration_Userdata.png|200px]]&lt;br /&gt;
* show technical detail for transfer of enrollment(s) from Moodle to SchoolTool&lt;br /&gt;
[[Image:SchoolTool_Integration_Enrollment.png|200px]]&lt;br /&gt;
* show technical detail for transfer of grades(s) from Moodle to SchoolTool&lt;br /&gt;
[[Image:SchoolTool_Integration_Grades.png|200px]]&lt;br /&gt;
&lt;br /&gt;
===Part 1: SSO===&lt;br /&gt;
====Tasks====&lt;br /&gt;
* Make Moodle aware of SchoolTool as a potential SSO peer&lt;br /&gt;
* Implement Moodle cron job to ensure all users are always maintained in SchoolTool&lt;br /&gt;
** UI: gracefully add this to existing Mnet SSO config screen if possible&lt;br /&gt;
* Implement SchoolTool SSO interfaces&lt;br /&gt;
** new_user() Mnet interface&lt;br /&gt;
** update_user() Mnet interface&lt;br /&gt;
** UI: link to configured Moodle peers&lt;br /&gt;
** UI: link back to Moodle after Moodle-&amp;gt;SchoolTool SSO login&lt;br /&gt;
** UI: Mnet SSO configuration&lt;br /&gt;
===Part 2: Enrollments===&lt;br /&gt;
====Tasks====&lt;br /&gt;
===Part 3: Grades===&lt;br /&gt;
====Tasks====&lt;br /&gt;
&lt;br /&gt;
==Misc. TODO==&lt;br /&gt;
* Matt/Tom: Find out what reports ECHS will want from SchoolTool&lt;br /&gt;
&lt;br /&gt;
* SchoolTool TODO list&lt;br /&gt;
** Create an &amp;quot;ongoing section&amp;quot; container that will contain (otherwise normal) sections that do not fit into the year/term schema.&lt;br /&gt;
*** integration v1.0 will place all Moodle-driven sections in the &amp;quot;ongoing&amp;quot; container&lt;br /&gt;
** Add enumerated status field to enrollment (e.g., Active, Withdrawn No Grade, Withdrawn Failing, Passed) This will not initially include a workflow, but simply a current state and a history of states.&lt;br /&gt;
** Add support for section history&lt;br /&gt;
*** grading history&lt;br /&gt;
*** enrollment history (including all enrollment status changes)&lt;br /&gt;
*** teacher history&lt;/div&gt;</summary>
		<author><name>Moquist</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/32/en/index.php?title=File:Country-mouse1.png&amp;diff=62010</id>
		<title>File:Country-mouse1.png</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/32/en/index.php?title=File:Country-mouse1.png&amp;diff=62010"/>
		<updated>2009-08-24T00:34:07Z</updated>

		<summary type="html">&lt;p&gt;Moquist: uploaded a new version of &amp;quot;Image:Country-mouse1.png&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Moquist</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/32/en/index.php?title=File:Country-mouse2.png&amp;diff=62009</id>
		<title>File:Country-mouse2.png</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/32/en/index.php?title=File:Country-mouse2.png&amp;diff=62009"/>
		<updated>2009-08-24T00:33:51Z</updated>

		<summary type="html">&lt;p&gt;Moquist: uploaded a new version of &amp;quot;Image:Country-mouse2.png&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Moquist</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/32/en/index.php?title=File:Country-mouse3.png&amp;diff=62008</id>
		<title>File:Country-mouse3.png</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/32/en/index.php?title=File:Country-mouse3.png&amp;diff=62008"/>
		<updated>2009-08-24T00:33:08Z</updated>

		<summary type="html">&lt;p&gt;Moquist: uploaded a new version of &amp;quot;Image:Country-mouse3.png&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Moquist</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/32/en/index.php?title=File:Country-mouse3.png&amp;diff=62007</id>
		<title>File:Country-mouse3.png</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/32/en/index.php?title=File:Country-mouse3.png&amp;diff=62007"/>
		<updated>2009-08-23T23:56:56Z</updated>

		<summary type="html">&lt;p&gt;Moquist: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Moquist</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/32/en/index.php?title=File:Country-mouse3.dia&amp;diff=62006</id>
		<title>File:Country-mouse3.dia</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/32/en/index.php?title=File:Country-mouse3.dia&amp;diff=62006"/>
		<updated>2009-08-23T23:56:41Z</updated>

		<summary type="html">&lt;p&gt;Moquist: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Moquist</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/32/en/index.php?title=File:Country-mouse2.png&amp;diff=62005</id>
		<title>File:Country-mouse2.png</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/32/en/index.php?title=File:Country-mouse2.png&amp;diff=62005"/>
		<updated>2009-08-23T23:56:27Z</updated>

		<summary type="html">&lt;p&gt;Moquist: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Moquist</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/32/en/index.php?title=File:Country-mouse2.dia&amp;diff=62004</id>
		<title>File:Country-mouse2.dia</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/32/en/index.php?title=File:Country-mouse2.dia&amp;diff=62004"/>
		<updated>2009-08-23T23:56:12Z</updated>

		<summary type="html">&lt;p&gt;Moquist: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Moquist</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/32/en/index.php?title=File:Country-mouse1.png&amp;diff=62003</id>
		<title>File:Country-mouse1.png</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/32/en/index.php?title=File:Country-mouse1.png&amp;diff=62003"/>
		<updated>2009-08-23T23:56:02Z</updated>

		<summary type="html">&lt;p&gt;Moquist: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Moquist</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/32/en/index.php?title=File:Country-mouse1.dia&amp;diff=62002</id>
		<title>File:Country-mouse1.dia</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/32/en/index.php?title=File:Country-mouse1.dia&amp;diff=62002"/>
		<updated>2009-08-23T23:55:51Z</updated>

		<summary type="html">&lt;p&gt;Moquist: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Moquist</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/32/en/index.php?title=Development:SchoolTool_Integration&amp;diff=61999</id>
		<title>Development:SchoolTool Integration</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/32/en/index.php?title=Development:SchoolTool_Integration&amp;diff=61999"/>
		<updated>2009-08-23T23:00:28Z</updated>

		<summary type="html">&lt;p&gt;Moquist: /* Scenarios */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [http://schooltool.org SchoolTool] SIS project recently released version 1.0, and lots of people could benefit from a solid integration between Moodle and SchoolTool. This page is a work-in-progress specification for the first version of this integration.&lt;br /&gt;
&lt;br /&gt;
==Goal: Moodle-SchoolTool integration modeled on Moodle-Mahara integration.==&lt;br /&gt;
* SchoolTool-Mahara integration should require very little extra effort when this project is complete.&lt;br /&gt;
* SchoolTool+Moodle+Mahara will provide a complete, integrated school administration/learning/portfolio suite that will be easily installable and supportable by time-crunched education systems administrators.&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
* Completely web-based integration configuration (similar to Moodle-Mahara configuration)&lt;br /&gt;
* SSO between SchoolTool and Moodle&lt;br /&gt;
* User accounts, courses, enrolments, assignments, and grades auto-update in SchoolTool&lt;br /&gt;
* Automatic grade transfer from Moodle to SchoolTool&lt;br /&gt;
&lt;br /&gt;
==Integration v1.0 NON-Requirements==&lt;br /&gt;
* Users, courses, enrolments can originate in and be managed within SchoolTool, with Moodle updating from SchoolTool.&lt;br /&gt;
** This will be the goal of the next version of the integration.&lt;br /&gt;
&lt;br /&gt;
==Assumptions==&lt;br /&gt;
* SchoolTool is the authoritative reporting application.&lt;br /&gt;
* Moodle drives all data creation and management.&lt;br /&gt;
&lt;br /&gt;
==Supported versions==&lt;br /&gt;
* SchoolTool 1.0&lt;br /&gt;
* Moodle 1.9.5+&lt;br /&gt;
&lt;br /&gt;
==Terminology Disambiguation==&lt;br /&gt;
* course: A SchoolTool course.&lt;br /&gt;
** SchoolTool &amp;quot;course&amp;quot; has no Moodle analogue. (&amp;quot;Algebra 1&amp;quot;) can have multiple &amp;quot;sections&amp;quot; (&amp;quot;Algebra 1 @ 9:15 taught by Mr. Smith&amp;quot;).&lt;br /&gt;
* section: A SchoolTool section, a Moodle course.&lt;br /&gt;
&lt;br /&gt;
==Background info and references==&lt;br /&gt;
* [https://docs.moodle.org/en/Grades Moodle 1.9+ gradebook]&lt;br /&gt;
* [https://docs.moodle.org/en/External_database Moodle external DB enrolment plugin ]&lt;br /&gt;
&lt;br /&gt;
==Implementation notes/ideas==&lt;br /&gt;
* The [http://git.catalyst.net.nz/mnet.git/ PHP mnet library] has been [https://code.edge.launchpad.net/~mnet-maintainers/mnet-wsgi/main ported to python.]&lt;br /&gt;
** SchoolTool will need to use this library.&lt;br /&gt;
* Moodle will need some awareness of SchoolTool in the mnet auth plugin. Not sure yet what this entails. (i.e., Mahara shows up in the list. We need SchoolTool in there, too.)&lt;br /&gt;
* Moodle will need an enrolment plugin that gets data from mnet but is otherwise modeled on the external DB enrolment plugin.&lt;br /&gt;
* Moodle will need a gradebook plugin that can pass grades to SchoolTool via mnet.&lt;br /&gt;
* integration v1.0 will not batch updates from Moodle to SchoolTool. Updates will be small and frequent.&lt;br /&gt;
&lt;br /&gt;
==Use Cases==&lt;br /&gt;
* integration v1.0: Drop SchoolTool into existing Moodle site, leave Moodle as driver of user directory and enrollment management.&lt;br /&gt;
** Accounts manually created in SchoolTool may or may not be integratable with Moodle. (Matt recommends this as a feature, but it should not be required for v1.0.)&lt;br /&gt;
** All course creation and enrollment updates must happen first in Moodle and be transferred from there to SchoolTool.&lt;br /&gt;
** Enrollment can be student-driven.&lt;br /&gt;
** An interactive enrollment in Moodle kicks off an immediate transaction to record the enrollment in schooltool.&lt;br /&gt;
* future integration version only: Drop SchoolTool into existing Moodle site, after bulk data transfer from Moodle-&amp;gt;SchoolTool, flip configuration and use SchoolTool as the authoritative user directory and/or enrollment management system.&lt;br /&gt;
** Could this be used to migrate to SchoolTool from another SIS (integrated somehow with Moodle) by way of Moodle?&lt;br /&gt;
* Start fresh with both.&lt;br /&gt;
* future integration version only: Drop Moodle into SchoolTool site.&lt;br /&gt;
** maybe not important for v1.0, might basically come for free&lt;br /&gt;
* future integration version only: Drop SchoolTool into Mahara site (and vice-versa)&lt;br /&gt;
&#039;&#039;&#039;In summary, integration v1.0 will be a Moodle-&amp;gt;SchoolTool integration. We are laying a foundation for a future bidirectional integration in which sections are created and teachers and enrollments are managed in SchoolTool, while Moodle regularly reports grades back to SchoolTool.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==User Interfaces==&lt;br /&gt;
* The integration configuration interfaces will be modeled on the existing interfaces for integrating Moodle and Mahara. See this document for a characterization of the type of admin user experience we want: [http://eduforge.org/docman/view.php/176/3200/Mahoodle.pdf Mahoodle.pdf]&lt;br /&gt;
* Moodle UIs&lt;br /&gt;
** Auth plugin config&lt;br /&gt;
** Enrolment plugin config&lt;br /&gt;
** Grade export config&lt;br /&gt;
* SchoolTool UIs&lt;br /&gt;
** similar division of config screens&lt;br /&gt;
** equivalent of Moodle&#039;s &amp;quot;Network Servers&amp;quot; block with links to SSO peers&lt;br /&gt;
** equivalent of &amp;quot;You have logged in from &amp;lt;somelink&amp;gt;&amp;quot; to go back after SSO&lt;br /&gt;
&lt;br /&gt;
==Mnet==&lt;br /&gt;
* What, in summary, does MNET provide?&lt;br /&gt;
** MNET is an XMLRPC implementation that dispatches messages to applications on either side (with a convention for function naming).&lt;br /&gt;
** MNET has a security layer that enforces that every message is encrypted and signed (with regular key rotation).&lt;br /&gt;
** MNET provides a core set of modules to provide common functionality such as SSO, key discovery, ping, and course enrollment.&lt;br /&gt;
&lt;br /&gt;
===Moodle mnet Interfaces===&lt;br /&gt;
* existing: SSO IDP interfaces&lt;br /&gt;
** in integration v1.0, SchoolTool will only be a Service Provider and Moodle will always be the IDentity Provider&lt;br /&gt;
** returns user data sufficient to create account&lt;br /&gt;
* list_user_enrolments(user)&lt;br /&gt;
** returns a list of all enrolments for a given user&lt;br /&gt;
** SchoolTool may call this to get enrolment data ASAP when an unknown user authenticates and an account is created using user_authorise()&lt;br /&gt;
&lt;br /&gt;
===SchoolTool mnet Interfaces===&lt;br /&gt;
* fetch_user(userdata)&lt;br /&gt;
** tell SchoolTool to ask Moodle for one user&#039;s data&lt;br /&gt;
** userdata: associative array such as:&lt;br /&gt;
*** username=&amp;gt;moquist&lt;br /&gt;
*** firstname=&amp;gt;Matt&lt;br /&gt;
*** lastname=&amp;gt;Oquist&lt;br /&gt;
*** idnumber=&amp;gt;1234457 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** email=&amp;gt;moquist@majen.net&lt;br /&gt;
*** password_hash=&amp;gt;234lih23rlh2asldfjas&lt;br /&gt;
*** password_hash_algorithm=&amp;gt;md5&lt;br /&gt;
*** ircnick=&amp;gt;moquist&lt;br /&gt;
*** arbitrary_field=&amp;gt;arbitrary_data_string...&lt;br /&gt;
**** SchoolTool only cares about enough to create a login account.&lt;br /&gt;
**** SchoolTool does not care about student-editable profile fields.&lt;br /&gt;
* new_section(sectiondata)&lt;br /&gt;
** sectiondata: associative array such as:&lt;br /&gt;
*** name=&amp;gt;&amp;quot;Algebra 1 V1 Mrs. Smith: Cats and their Affectations&amp;quot;&lt;br /&gt;
*** idnumber=&amp;gt;197423 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** teacheridnumber=&amp;gt;987234 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** segment=&amp;gt;1 # a section may have more than one semester/segment/term(?)&lt;br /&gt;
* new_enrolment(enrolmentdata)&lt;br /&gt;
** create new association between user &amp;amp; section&lt;br /&gt;
** enrolmentdata: associative array such as:&lt;br /&gt;
*** sectionid=&amp;gt;197423 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** userid=&amp;gt;987234 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** role=&amp;gt;&#039;teacher&#039; # only &#039;student&#039; and &#039;teacher&#039; supported in integration v1.0&lt;br /&gt;
* new_assessment(assessmentdata)&lt;br /&gt;
** create new assessment to be displayed in grade reports&lt;br /&gt;
** assessmentdata: associative array such as:&lt;br /&gt;
*** sectionid=&amp;gt;197423 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** name=&amp;gt;&amp;quot;How to grill a logarithmic sandwich&amp;quot;&lt;br /&gt;
*** idnumber=&amp;gt;73743734 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** chapternum=&amp;gt;3&lt;br /&gt;
*** honors_required=&amp;gt;false&lt;br /&gt;
*** nonhonors_required=&amp;gt;true&lt;br /&gt;
*** extra_credit=&amp;gt;false&lt;br /&gt;
*** pointval=&amp;gt;68&lt;br /&gt;
* new_grade(gradedata)&lt;br /&gt;
** make entry in gradebook&lt;br /&gt;
** gradedata: associative array such as:&lt;br /&gt;
*** assessmentid=&amp;gt;73743734&lt;br /&gt;
*** userid=&amp;gt;2347234 # unique shared ID of student&lt;br /&gt;
*** points_earned=&amp;gt;62&lt;br /&gt;
*** excepted=&amp;gt;false&lt;br /&gt;
*** attempt_num=&amp;gt;1 # if multiple attempts are allowed&lt;br /&gt;
&lt;br /&gt;
==Phase 2==&lt;br /&gt;
* Some discussion is taking place [http://moodle.org/mod/forum/discuss.php?d=129267 here].&lt;br /&gt;
===Scenarios===&lt;br /&gt;
# Susie Sunglasses will return to Town High School for her senior year. During the last week of school in her junior year, she sits down in the computer lab, logs into Moodle, and enrolls herself in each of the 5 courses she wishes to take during the fall semester. Moodle sends information about these enrollments to SchoolTool, and when THS principal Patricia Participle logs in to SchoolTool in July she is able to see which courses Susie will be taking in the fall.&lt;br /&gt;
#:[https://docs.moodle.org/en/images_en/d/d1/Susie-and-patricia.dia Susie-and-patricia.dia source file]&lt;br /&gt;
#:[[Image:Susie-and-patricia.png|300px]]&lt;br /&gt;
# Tommy Trackstar is a new student at Town High School. He consults immediately with guidance counselor Guinevere, who logs into Moodle and enrolls him in all his chosen courses. As Tommy completes his work and grades are given (some automatically and some manually by the teacher) in Moodle, each grade is also transferred to SchoolTool, which is thereby able to generate an up-to-date progress report for Tommy at any desired point in time (past or present).&lt;br /&gt;
#:[https://docs.moodle.org/en/images_en/a/af/Tommy-and-guinevere1.dia Tommy-and-guinevere1.dia source file]&lt;br /&gt;
#:[[Image:Tommy-and-guinevere1.png|500px]]&lt;br /&gt;
# Track season comes around, and Tommy gets too busy with practice. After careful consideration of all his available options, Tommy decides to drop Mathematics of Whistling to have an extra hour to run each day. Either he or guidance counselor Guinevere unenrolls him in Moodle from Mathematics of Whistling. The unenrollment is transferred directly to SchoolTool, and Guinevere is able to enter a note and a withdrawal code to explain what happened. This withdrawal is then included on Tommy&#039;s transcript.&lt;br /&gt;
#:[https://docs.moodle.org/en/images_en/2/2b/Tommy-and-guinevere2.dia Tommy-and-guinevere2.dia source file]&lt;br /&gt;
#:[[Image:Tommy-and-guinevere2.png|500px]]&lt;br /&gt;
# Samantha Stupenda, widely rumored to be the most demanding science teacher at THS, has developed assignments for the newest chapter of the textbook she&#039;s writing (&amp;quot;Earth Science Internalized: No Escape&amp;quot;). Samantha adds each of these assignments to her course in Moodle. As she adds each assignment, it is transferred to SchoolTool as a grade item for the section, and SchoolTool will be prepared to accept grade data for each student enrolled in Samantha&#039;s course.&lt;br /&gt;
#:[https://docs.moodle.org/en/images_en/5/56/Samantha1.dia Samantha1.dia source file]&lt;br /&gt;
#:[[Image:Samantha1.png|500px]]&lt;br /&gt;
# Vera Vestibule is taking Bubble Blowing 101, which has no Moodle component at all. Guidance counselor Guinevere logs into SchoolTool and 1) creates a course (&amp;quot;Bubble Blowing 101&amp;quot;), 2) creates a section of the course (&amp;quot;Bubble Blowing 101 taught by Chewie Chomper&amp;quot;), and 3) enrolls Vera in the section. Chewie uploads in SchoolTool a spreadsheet specifying the gradeable assignments in the course. As his students complete the assignments, Chewie enters their grades in SchoolTool, which is then able to include this course and these grades in student progress reports and transcripts.&lt;br /&gt;
#:[https://docs.moodle.org/en/images_en/d/d1/Vera.dia Vera.dia source file]&lt;br /&gt;
#:[[Image:Vera.png|300px]]&lt;br /&gt;
# Samantha Stupenda also teaches Chemistry. All her class assignments are graded in Moodle, and those grades transfer automatically to SchoolTool. But her lab assignments are not in Moodle, and Samantha creates grade items and enters those grades manually into her Chemistry sections in SchoolTool. Halfway through the school year, Samantha decides to represent those lab assignments in Moodle, and she is careful to use *exactly* the same names that she entered into SchoolTool previously. What happens?&lt;br /&gt;
# Country Mouse High School has been using Moodle for the past 3 years, and many but not all of the teachers have enthusiastically created Moodle courses that they use extensively in their classrooms. However, some teachers do not have a Moodle presence at all. The principal of CMHS, Betsy Balustrade, keeps a collection of spreadsheets and other documents which she uses to plan and manage the class schedule each year. The technology director of CMHS, Cathy Colever, decides to adopt SchoolTool as the Student Information System (SIS) of CMHS. She installs SchoolTool and integrates it with their existing Moodle, and all the information in Moodle about the teachers, students, courses, enrollments, and grades is transferred to SchoolTool. Cathy provides a series of training sessions for Betsy and her administrative assistant Astra Lodge. Since not every course in the school is in Moodle, Astra enters information about some courses, teachers, and student enrollments into SchoolTool manually. After that, Betsy is able to use SchoolTool to create the schedule for each upcoming semester.&lt;br /&gt;
## Phase 2 Part 1: Users&lt;br /&gt;
## Phase 2 Part 2: Enrollments&lt;br /&gt;
## Phase 2 Part 3: Grades&lt;br /&gt;
&lt;br /&gt;
===Flowcharts Because We Like Them===&lt;br /&gt;
* address each of the above scenarios...&lt;br /&gt;
* show technical detail for transfer of user account(s) from Moodle to SchoolTool&lt;br /&gt;
[[Image:SchoolTool_Integration_Userdata.png|200px]]&lt;br /&gt;
* show technical detail for transfer of enrollment(s) from Moodle to SchoolTool&lt;br /&gt;
[[Image:SchoolTool_Integration_Enrollment.png|200px]]&lt;br /&gt;
* show technical detail for transfer of grades(s) from Moodle to SchoolTool&lt;br /&gt;
[[Image:SchoolTool_Integration_Grades.png|200px]]&lt;br /&gt;
&lt;br /&gt;
===Part 1: SSO===&lt;br /&gt;
====Tasks====&lt;br /&gt;
* Make Moodle aware of SchoolTool as a potential SSO peer&lt;br /&gt;
* Implement Moodle cron job to ensure all users are always maintained in SchoolTool&lt;br /&gt;
** UI: gracefully add this to existing Mnet SSO config screen if possible&lt;br /&gt;
* Implement SchoolTool SSO interfaces&lt;br /&gt;
** new_user() Mnet interface&lt;br /&gt;
** update_user() Mnet interface&lt;br /&gt;
** UI: link to configured Moodle peers&lt;br /&gt;
** UI: link back to Moodle after Moodle-&amp;gt;SchoolTool SSO login&lt;br /&gt;
** UI: Mnet SSO configuration&lt;br /&gt;
===Part 2: Enrollments===&lt;br /&gt;
====Tasks====&lt;br /&gt;
===Part 3: Grades===&lt;br /&gt;
====Tasks====&lt;br /&gt;
&lt;br /&gt;
==Misc. TODO==&lt;br /&gt;
* Matt/Tom: Find out what reports ECHS will want from SchoolTool&lt;br /&gt;
&lt;br /&gt;
* SchoolTool TODO list&lt;br /&gt;
** Create an &amp;quot;ongoing section&amp;quot; container that will contain (otherwise normal) sections that do not fit into the year/term schema.&lt;br /&gt;
*** integration v1.0 will place all Moodle-driven sections in the &amp;quot;ongoing&amp;quot; container&lt;br /&gt;
** Add enumerated status field to enrollment (e.g., Active, Withdrawn No Grade, Withdrawn Failing, Passed) This will not initially include a workflow, but simply a current state and a history of states.&lt;br /&gt;
** Add support for section history&lt;br /&gt;
*** grading history&lt;br /&gt;
*** enrollment history (including all enrollment status changes)&lt;br /&gt;
*** teacher history&lt;/div&gt;</summary>
		<author><name>Moquist</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/32/en/index.php?title=Development:SchoolTool_Integration&amp;diff=61998</id>
		<title>Development:SchoolTool Integration</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/32/en/index.php?title=Development:SchoolTool_Integration&amp;diff=61998"/>
		<updated>2009-08-23T22:39:06Z</updated>

		<summary type="html">&lt;p&gt;Moquist: /* Scenarios */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [http://schooltool.org SchoolTool] SIS project recently released version 1.0, and lots of people could benefit from a solid integration between Moodle and SchoolTool. This page is a work-in-progress specification for the first version of this integration.&lt;br /&gt;
&lt;br /&gt;
==Goal: Moodle-SchoolTool integration modeled on Moodle-Mahara integration.==&lt;br /&gt;
* SchoolTool-Mahara integration should require very little extra effort when this project is complete.&lt;br /&gt;
* SchoolTool+Moodle+Mahara will provide a complete, integrated school administration/learning/portfolio suite that will be easily installable and supportable by time-crunched education systems administrators.&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
* Completely web-based integration configuration (similar to Moodle-Mahara configuration)&lt;br /&gt;
* SSO between SchoolTool and Moodle&lt;br /&gt;
* User accounts, courses, enrolments, assignments, and grades auto-update in SchoolTool&lt;br /&gt;
* Automatic grade transfer from Moodle to SchoolTool&lt;br /&gt;
&lt;br /&gt;
==Integration v1.0 NON-Requirements==&lt;br /&gt;
* Users, courses, enrolments can originate in and be managed within SchoolTool, with Moodle updating from SchoolTool.&lt;br /&gt;
** This will be the goal of the next version of the integration.&lt;br /&gt;
&lt;br /&gt;
==Assumptions==&lt;br /&gt;
* SchoolTool is the authoritative reporting application.&lt;br /&gt;
* Moodle drives all data creation and management.&lt;br /&gt;
&lt;br /&gt;
==Supported versions==&lt;br /&gt;
* SchoolTool 1.0&lt;br /&gt;
* Moodle 1.9.5+&lt;br /&gt;
&lt;br /&gt;
==Terminology Disambiguation==&lt;br /&gt;
* course: A SchoolTool course.&lt;br /&gt;
** SchoolTool &amp;quot;course&amp;quot; has no Moodle analogue. (&amp;quot;Algebra 1&amp;quot;) can have multiple &amp;quot;sections&amp;quot; (&amp;quot;Algebra 1 @ 9:15 taught by Mr. Smith&amp;quot;).&lt;br /&gt;
* section: A SchoolTool section, a Moodle course.&lt;br /&gt;
&lt;br /&gt;
==Background info and references==&lt;br /&gt;
* [https://docs.moodle.org/en/Grades Moodle 1.9+ gradebook]&lt;br /&gt;
* [https://docs.moodle.org/en/External_database Moodle external DB enrolment plugin ]&lt;br /&gt;
&lt;br /&gt;
==Implementation notes/ideas==&lt;br /&gt;
* The [http://git.catalyst.net.nz/mnet.git/ PHP mnet library] has been [https://code.edge.launchpad.net/~mnet-maintainers/mnet-wsgi/main ported to python.]&lt;br /&gt;
** SchoolTool will need to use this library.&lt;br /&gt;
* Moodle will need some awareness of SchoolTool in the mnet auth plugin. Not sure yet what this entails. (i.e., Mahara shows up in the list. We need SchoolTool in there, too.)&lt;br /&gt;
* Moodle will need an enrolment plugin that gets data from mnet but is otherwise modeled on the external DB enrolment plugin.&lt;br /&gt;
* Moodle will need a gradebook plugin that can pass grades to SchoolTool via mnet.&lt;br /&gt;
* integration v1.0 will not batch updates from Moodle to SchoolTool. Updates will be small and frequent.&lt;br /&gt;
&lt;br /&gt;
==Use Cases==&lt;br /&gt;
* integration v1.0: Drop SchoolTool into existing Moodle site, leave Moodle as driver of user directory and enrollment management.&lt;br /&gt;
** Accounts manually created in SchoolTool may or may not be integratable with Moodle. (Matt recommends this as a feature, but it should not be required for v1.0.)&lt;br /&gt;
** All course creation and enrollment updates must happen first in Moodle and be transferred from there to SchoolTool.&lt;br /&gt;
** Enrollment can be student-driven.&lt;br /&gt;
** An interactive enrollment in Moodle kicks off an immediate transaction to record the enrollment in schooltool.&lt;br /&gt;
* future integration version only: Drop SchoolTool into existing Moodle site, after bulk data transfer from Moodle-&amp;gt;SchoolTool, flip configuration and use SchoolTool as the authoritative user directory and/or enrollment management system.&lt;br /&gt;
** Could this be used to migrate to SchoolTool from another SIS (integrated somehow with Moodle) by way of Moodle?&lt;br /&gt;
* Start fresh with both.&lt;br /&gt;
* future integration version only: Drop Moodle into SchoolTool site.&lt;br /&gt;
** maybe not important for v1.0, might basically come for free&lt;br /&gt;
* future integration version only: Drop SchoolTool into Mahara site (and vice-versa)&lt;br /&gt;
&#039;&#039;&#039;In summary, integration v1.0 will be a Moodle-&amp;gt;SchoolTool integration. We are laying a foundation for a future bidirectional integration in which sections are created and teachers and enrollments are managed in SchoolTool, while Moodle regularly reports grades back to SchoolTool.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==User Interfaces==&lt;br /&gt;
* The integration configuration interfaces will be modeled on the existing interfaces for integrating Moodle and Mahara. See this document for a characterization of the type of admin user experience we want: [http://eduforge.org/docman/view.php/176/3200/Mahoodle.pdf Mahoodle.pdf]&lt;br /&gt;
* Moodle UIs&lt;br /&gt;
** Auth plugin config&lt;br /&gt;
** Enrolment plugin config&lt;br /&gt;
** Grade export config&lt;br /&gt;
* SchoolTool UIs&lt;br /&gt;
** similar division of config screens&lt;br /&gt;
** equivalent of Moodle&#039;s &amp;quot;Network Servers&amp;quot; block with links to SSO peers&lt;br /&gt;
** equivalent of &amp;quot;You have logged in from &amp;lt;somelink&amp;gt;&amp;quot; to go back after SSO&lt;br /&gt;
&lt;br /&gt;
==Mnet==&lt;br /&gt;
* What, in summary, does MNET provide?&lt;br /&gt;
** MNET is an XMLRPC implementation that dispatches messages to applications on either side (with a convention for function naming).&lt;br /&gt;
** MNET has a security layer that enforces that every message is encrypted and signed (with regular key rotation).&lt;br /&gt;
** MNET provides a core set of modules to provide common functionality such as SSO, key discovery, ping, and course enrollment.&lt;br /&gt;
&lt;br /&gt;
===Moodle mnet Interfaces===&lt;br /&gt;
* existing: SSO IDP interfaces&lt;br /&gt;
** in integration v1.0, SchoolTool will only be a Service Provider and Moodle will always be the IDentity Provider&lt;br /&gt;
** returns user data sufficient to create account&lt;br /&gt;
* list_user_enrolments(user)&lt;br /&gt;
** returns a list of all enrolments for a given user&lt;br /&gt;
** SchoolTool may call this to get enrolment data ASAP when an unknown user authenticates and an account is created using user_authorise()&lt;br /&gt;
&lt;br /&gt;
===SchoolTool mnet Interfaces===&lt;br /&gt;
* fetch_user(userdata)&lt;br /&gt;
** tell SchoolTool to ask Moodle for one user&#039;s data&lt;br /&gt;
** userdata: associative array such as:&lt;br /&gt;
*** username=&amp;gt;moquist&lt;br /&gt;
*** firstname=&amp;gt;Matt&lt;br /&gt;
*** lastname=&amp;gt;Oquist&lt;br /&gt;
*** idnumber=&amp;gt;1234457 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** email=&amp;gt;moquist@majen.net&lt;br /&gt;
*** password_hash=&amp;gt;234lih23rlh2asldfjas&lt;br /&gt;
*** password_hash_algorithm=&amp;gt;md5&lt;br /&gt;
*** ircnick=&amp;gt;moquist&lt;br /&gt;
*** arbitrary_field=&amp;gt;arbitrary_data_string...&lt;br /&gt;
**** SchoolTool only cares about enough to create a login account.&lt;br /&gt;
**** SchoolTool does not care about student-editable profile fields.&lt;br /&gt;
* new_section(sectiondata)&lt;br /&gt;
** sectiondata: associative array such as:&lt;br /&gt;
*** name=&amp;gt;&amp;quot;Algebra 1 V1 Mrs. Smith: Cats and their Affectations&amp;quot;&lt;br /&gt;
*** idnumber=&amp;gt;197423 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** teacheridnumber=&amp;gt;987234 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** segment=&amp;gt;1 # a section may have more than one semester/segment/term(?)&lt;br /&gt;
* new_enrolment(enrolmentdata)&lt;br /&gt;
** create new association between user &amp;amp; section&lt;br /&gt;
** enrolmentdata: associative array such as:&lt;br /&gt;
*** sectionid=&amp;gt;197423 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** userid=&amp;gt;987234 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** role=&amp;gt;&#039;teacher&#039; # only &#039;student&#039; and &#039;teacher&#039; supported in integration v1.0&lt;br /&gt;
* new_assessment(assessmentdata)&lt;br /&gt;
** create new assessment to be displayed in grade reports&lt;br /&gt;
** assessmentdata: associative array such as:&lt;br /&gt;
*** sectionid=&amp;gt;197423 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** name=&amp;gt;&amp;quot;How to grill a logarithmic sandwich&amp;quot;&lt;br /&gt;
*** idnumber=&amp;gt;73743734 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** chapternum=&amp;gt;3&lt;br /&gt;
*** honors_required=&amp;gt;false&lt;br /&gt;
*** nonhonors_required=&amp;gt;true&lt;br /&gt;
*** extra_credit=&amp;gt;false&lt;br /&gt;
*** pointval=&amp;gt;68&lt;br /&gt;
* new_grade(gradedata)&lt;br /&gt;
** make entry in gradebook&lt;br /&gt;
** gradedata: associative array such as:&lt;br /&gt;
*** assessmentid=&amp;gt;73743734&lt;br /&gt;
*** userid=&amp;gt;2347234 # unique shared ID of student&lt;br /&gt;
*** points_earned=&amp;gt;62&lt;br /&gt;
*** excepted=&amp;gt;false&lt;br /&gt;
*** attempt_num=&amp;gt;1 # if multiple attempts are allowed&lt;br /&gt;
&lt;br /&gt;
==Phase 2==&lt;br /&gt;
* Some discussion is taking place [http://moodle.org/mod/forum/discuss.php?d=129267 here].&lt;br /&gt;
===Scenarios===&lt;br /&gt;
# Susie Sunglasses will return to Town High School for her senior year. During the last week of school in her junior year, she sits down in the computer lab, logs into Moodle, and enrolls herself in each of the 5 courses she wishes to take during the fall semester. Moodle sends information about these enrollments to SchoolTool, and when THS principal Patricia Participle logs in to SchoolTool in July she is able to see which courses Susie will be taking in the fall.&lt;br /&gt;
#:[https://docs.moodle.org/en/images_en/d/d1/Susie-and-patricia.dia Susie-and-patricia.dia source file]&lt;br /&gt;
#:[[Image:Susie-and-patricia.png|300px]]&lt;br /&gt;
# Tommy Trackstar is a new student at Town High School. He consults immediately with guidance counselor Guinevere, who logs into Moodle and enrolls him in all his chosen courses. As Tommy completes his work and grades are given (some automatically and some manually by the teacher) in Moodle, each grade is also transferred to SchoolTool, which is thereby able to generate an up-to-date progress report for Tommy at any desired point in time (past or present).&lt;br /&gt;
#:[https://docs.moodle.org/en/images_en/a/af/Tommy-and-guinevere1.dia Tommy-and-guinevere1.dia source file]&lt;br /&gt;
#:[[Image:Tommy-and-guinevere1.png|500px]]&lt;br /&gt;
# Track season comes around, and Tommy gets too busy with practice. After careful consideration of all his available options, Tommy decides to drop Mathematics of Whistling to have an extra hour to run each day. Either he or guidance counselor Guinevere unenrolls him in Moodle from Mathematics of Whistling. The unenrollment is transferred directly to SchoolTool, and Guinevere is able to enter a note and a withdrawal code to explain what happened. This withdrawal is then included on Tommy&#039;s transcript.&lt;br /&gt;
#:[https://docs.moodle.org/en/images_en/2/2b/Tommy-and-guinevere2.dia Tommy-and-guinevere2.dia source file]&lt;br /&gt;
#:[[Image:Tommy-and-guinevere2.png|500px]]&lt;br /&gt;
# Samantha Stupenda, widely rumored to be the most demanding science teacher at THS, has developed assignments for the newest chapter of the textbook she&#039;s writing (&amp;quot;Earth Science Internalized: No Escape&amp;quot;). Samantha adds each of these assignments to her course in Moodle. As she adds each assignment, it is transferred to SchoolTool as a grade item for the section, and SchoolTool will be prepared to accept grade data for each student enrolled in Samantha&#039;s course.&lt;br /&gt;
#:[https://docs.moodle.org/en/images_en/5/56/Samantha1.dia Samantha1.dia source file]&lt;br /&gt;
#:[[Image:Samantha1.png|500px]]&lt;br /&gt;
# Vera Vestibule is taking Bubble Blowing 101, which has no Moodle component at all. Guidance counselor Guinevere logs into SchoolTool and 1) creates a course (&amp;quot;Bubble Blowing 101&amp;quot;), 2) creates a section of the course (&amp;quot;Bubble Blowing 101 taught by Chewie Chomper&amp;quot;), and 3) enrolls Vera in the section. Chewie uploads in SchoolTool a spreadsheet specifying the gradeable assignments in the course. As his students complete the assignments, Chewie enters their grades in SchoolTool, which is then able to include this course and these grades in student progress reports and transcripts.&lt;br /&gt;
#:[https://docs.moodle.org/en/images_en/d/d1/Vera.dia Vera.dia source file]&lt;br /&gt;
#:[[Image:Vera.png|300px]]&lt;br /&gt;
# Country Mouse High School has been using Moodle for the past 3 years, and many but not all of the teachers have enthusiastically created Moodle courses that they use extensively in their classrooms. However, some teachers do not have a Moodle presence at all. The principal of CMHS, Betsy Balustrade, keeps a collection of spreadsheets and other documents which she uses to plan and manage the class schedule each year. The technology director of CMHS, Cathy Colever, decides to adopt SchoolTool as the Student Information System (SIS) of CMHS. She installs SchoolTool and integrates it with their existing Moodle, and all the information in Moodle about the teachers, students, courses, enrollments, and grades is transferred to SchoolTool. Cathy provides a series of training sessions for Betsy and her administrative assistant Astra Lodge. Since not every course in the school is in Moodle, Astra enters information about some courses, teachers, and student enrollments into SchoolTool manually. After that, Betsy is able to use SchoolTool to create the schedule for each upcoming semester.&lt;br /&gt;
# Samantha Stupenda also teaches Chemistry. All her class assignments are graded in Moodle, and those grades transfer automatically to SchoolTool. But her lab assignments are not in Moodle, and Samantha creates grade items and enters those grades manually into her Chemistry sections in SchoolTool. Halfway through the school year, Samantha decides to represent those lab assignments in Moodle, and she is careful to use *exactly* the same names that she entered into SchoolTool previously. What happens?&lt;br /&gt;
&lt;br /&gt;
===Flowcharts Because We Like Them===&lt;br /&gt;
* address each of the above scenarios...&lt;br /&gt;
* show technical detail for transfer of user account(s) from Moodle to SchoolTool&lt;br /&gt;
[[Image:SchoolTool_Integration_Userdata.png|200px]]&lt;br /&gt;
* show technical detail for transfer of enrollment(s) from Moodle to SchoolTool&lt;br /&gt;
[[Image:SchoolTool_Integration_Enrollment.png|200px]]&lt;br /&gt;
* show technical detail for transfer of grades(s) from Moodle to SchoolTool&lt;br /&gt;
[[Image:SchoolTool_Integration_Grades.png|200px]]&lt;br /&gt;
&lt;br /&gt;
===Part 1: SSO===&lt;br /&gt;
====Tasks====&lt;br /&gt;
* Make Moodle aware of SchoolTool as a potential SSO peer&lt;br /&gt;
* Implement Moodle cron job to ensure all users are always maintained in SchoolTool&lt;br /&gt;
** UI: gracefully add this to existing Mnet SSO config screen if possible&lt;br /&gt;
* Implement SchoolTool SSO interfaces&lt;br /&gt;
** new_user() Mnet interface&lt;br /&gt;
** update_user() Mnet interface&lt;br /&gt;
** UI: link to configured Moodle peers&lt;br /&gt;
** UI: link back to Moodle after Moodle-&amp;gt;SchoolTool SSO login&lt;br /&gt;
** UI: Mnet SSO configuration&lt;br /&gt;
===Part 2: Enrollments===&lt;br /&gt;
====Tasks====&lt;br /&gt;
===Part 3: Grades===&lt;br /&gt;
====Tasks====&lt;br /&gt;
&lt;br /&gt;
==Misc. TODO==&lt;br /&gt;
* Matt/Tom: Find out what reports ECHS will want from SchoolTool&lt;br /&gt;
&lt;br /&gt;
* SchoolTool TODO list&lt;br /&gt;
** Create an &amp;quot;ongoing section&amp;quot; container that will contain (otherwise normal) sections that do not fit into the year/term schema.&lt;br /&gt;
*** integration v1.0 will place all Moodle-driven sections in the &amp;quot;ongoing&amp;quot; container&lt;br /&gt;
** Add enumerated status field to enrollment (e.g., Active, Withdrawn No Grade, Withdrawn Failing, Passed) This will not initially include a workflow, but simply a current state and a history of states.&lt;br /&gt;
** Add support for section history&lt;br /&gt;
*** grading history&lt;br /&gt;
*** enrollment history (including all enrollment status changes)&lt;br /&gt;
*** teacher history&lt;/div&gt;</summary>
		<author><name>Moquist</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/32/en/index.php?title=File:Vera.png&amp;diff=61997</id>
		<title>File:Vera.png</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/32/en/index.php?title=File:Vera.png&amp;diff=61997"/>
		<updated>2009-08-23T22:38:31Z</updated>

		<summary type="html">&lt;p&gt;Moquist: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Moquist</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/32/en/index.php?title=File:Vera.dia&amp;diff=61996</id>
		<title>File:Vera.dia</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/32/en/index.php?title=File:Vera.dia&amp;diff=61996"/>
		<updated>2009-08-23T22:38:16Z</updated>

		<summary type="html">&lt;p&gt;Moquist: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Moquist</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/32/en/index.php?title=File:Samantha1.png&amp;diff=61995</id>
		<title>File:Samantha1.png</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/32/en/index.php?title=File:Samantha1.png&amp;diff=61995"/>
		<updated>2009-08-23T22:37:56Z</updated>

		<summary type="html">&lt;p&gt;Moquist: uploaded a new version of &amp;quot;Image:Samantha1.png&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Moquist</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/32/en/index.php?title=File:Samantha1.dia&amp;diff=61994</id>
		<title>File:Samantha1.dia</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/32/en/index.php?title=File:Samantha1.dia&amp;diff=61994"/>
		<updated>2009-08-23T22:37:30Z</updated>

		<summary type="html">&lt;p&gt;Moquist: uploaded a new version of &amp;quot;Image:Samantha1.dia&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Moquist</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/32/en/index.php?title=File:Samantha1.dia&amp;diff=61845</id>
		<title>File:Samantha1.dia</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/32/en/index.php?title=File:Samantha1.dia&amp;diff=61845"/>
		<updated>2009-08-20T20:57:47Z</updated>

		<summary type="html">&lt;p&gt;Moquist: uploaded a new version of &amp;quot;Image:Samantha1.dia&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Moquist</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/32/en/index.php?title=File:Samantha1.png&amp;diff=61844</id>
		<title>File:Samantha1.png</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/32/en/index.php?title=File:Samantha1.png&amp;diff=61844"/>
		<updated>2009-08-20T20:56:55Z</updated>

		<summary type="html">&lt;p&gt;Moquist: uploaded a new version of &amp;quot;Image:Samantha1.png&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Moquist</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/32/en/index.php?title=Development:SchoolTool_Integration&amp;diff=61636</id>
		<title>Development:SchoolTool Integration</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/32/en/index.php?title=Development:SchoolTool_Integration&amp;diff=61636"/>
		<updated>2009-08-16T19:01:50Z</updated>

		<summary type="html">&lt;p&gt;Moquist: /* Terminology Disambiguation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [http://schooltool.org SchoolTool] SIS project recently released version 1.0, and lots of people could benefit from a solid integration between Moodle and SchoolTool. This page is a work-in-progress specification for the first version of this integration.&lt;br /&gt;
&lt;br /&gt;
==Goal: Moodle-SchoolTool integration modeled on Moodle-Mahara integration.==&lt;br /&gt;
* SchoolTool-Mahara integration should require very little extra effort when this project is complete.&lt;br /&gt;
* SchoolTool+Moodle+Mahara will provide a complete, integrated school administration/learning/portfolio suite that will be easily installable and supportable by time-crunched education systems administrators.&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
* Completely web-based integration configuration (similar to Moodle-Mahara configuration)&lt;br /&gt;
* SSO between SchoolTool and Moodle&lt;br /&gt;
* User accounts, courses, enrolments, assignments, and grades auto-update in SchoolTool&lt;br /&gt;
* Automatic grade transfer from Moodle to SchoolTool&lt;br /&gt;
&lt;br /&gt;
==Integration v1.0 NON-Requirements==&lt;br /&gt;
* Users, courses, enrolments can originate in and be managed within SchoolTool, with Moodle updating from SchoolTool.&lt;br /&gt;
** This will be the goal of the next version of the integration.&lt;br /&gt;
&lt;br /&gt;
==Assumptions==&lt;br /&gt;
* SchoolTool is the authoritative reporting application.&lt;br /&gt;
* Moodle drives all data creation and management.&lt;br /&gt;
&lt;br /&gt;
==Supported versions==&lt;br /&gt;
* SchoolTool 1.0&lt;br /&gt;
* Moodle 1.9.5+&lt;br /&gt;
&lt;br /&gt;
==Terminology Disambiguation==&lt;br /&gt;
* course: A SchoolTool course.&lt;br /&gt;
** SchoolTool &amp;quot;course&amp;quot; has no Moodle analogue. (&amp;quot;Algebra 1&amp;quot;) can have multiple &amp;quot;sections&amp;quot; (&amp;quot;Algebra 1 @ 9:15 taught by Mr. Smith&amp;quot;).&lt;br /&gt;
* section: A SchoolTool section, a Moodle course.&lt;br /&gt;
&lt;br /&gt;
==Background info and references==&lt;br /&gt;
* [https://docs.moodle.org/en/Grades Moodle 1.9+ gradebook]&lt;br /&gt;
* [https://docs.moodle.org/en/External_database Moodle external DB enrolment plugin ]&lt;br /&gt;
&lt;br /&gt;
==Implementation notes/ideas==&lt;br /&gt;
* The [http://git.catalyst.net.nz/mnet.git/ PHP mnet library] has been [https://code.edge.launchpad.net/~mnet-maintainers/mnet-wsgi/main ported to python.]&lt;br /&gt;
** SchoolTool will need to use this library.&lt;br /&gt;
* Moodle will need some awareness of SchoolTool in the mnet auth plugin. Not sure yet what this entails. (i.e., Mahara shows up in the list. We need SchoolTool in there, too.)&lt;br /&gt;
* Moodle will need an enrolment plugin that gets data from mnet but is otherwise modeled on the external DB enrolment plugin.&lt;br /&gt;
* Moodle will need a gradebook plugin that can pass grades to SchoolTool via mnet.&lt;br /&gt;
* integration v1.0 will not batch updates from Moodle to SchoolTool. Updates will be small and frequent.&lt;br /&gt;
&lt;br /&gt;
==Use Cases==&lt;br /&gt;
* integration v1.0: Drop SchoolTool into existing Moodle site, leave Moodle as driver of user directory and enrollment management.&lt;br /&gt;
** Accounts manually created in SchoolTool may or may not be integratable with Moodle. (Matt recommends this as a feature, but it should not be required for v1.0.)&lt;br /&gt;
** All course creation and enrollment updates must happen first in Moodle and be transferred from there to SchoolTool.&lt;br /&gt;
** Enrollment can be student-driven.&lt;br /&gt;
** An interactive enrollment in Moodle kicks off an immediate transaction to record the enrollment in schooltool.&lt;br /&gt;
* future integration version only: Drop SchoolTool into existing Moodle site, after bulk data transfer from Moodle-&amp;gt;SchoolTool, flip configuration and use SchoolTool as the authoritative user directory and/or enrollment management system.&lt;br /&gt;
** Could this be used to migrate to SchoolTool from another SIS (integrated somehow with Moodle) by way of Moodle?&lt;br /&gt;
* Start fresh with both.&lt;br /&gt;
* future integration version only: Drop Moodle into SchoolTool site.&lt;br /&gt;
** maybe not important for v1.0, might basically come for free&lt;br /&gt;
* future integration version only: Drop SchoolTool into Mahara site (and vice-versa)&lt;br /&gt;
&#039;&#039;&#039;In summary, integration v1.0 will be a Moodle-&amp;gt;SchoolTool integration. We are laying a foundation for a future bidirectional integration in which sections are created and teachers and enrollments are managed in SchoolTool, while Moodle regularly reports grades back to SchoolTool.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==User Interfaces==&lt;br /&gt;
* The integration configuration interfaces will be modeled on the existing interfaces for integrating Moodle and Mahara. See this document for a characterization of the type of admin user experience we want: [http://eduforge.org/docman/view.php/176/3200/Mahoodle.pdf Mahoodle.pdf]&lt;br /&gt;
* Moodle UIs&lt;br /&gt;
** Auth plugin config&lt;br /&gt;
** Enrolment plugin config&lt;br /&gt;
** Grade export config&lt;br /&gt;
* SchoolTool UIs&lt;br /&gt;
** similar division of config screens&lt;br /&gt;
** equivalent of Moodle&#039;s &amp;quot;Network Servers&amp;quot; block with links to SSO peers&lt;br /&gt;
** equivalent of &amp;quot;You have logged in from &amp;lt;somelink&amp;gt;&amp;quot; to go back after SSO&lt;br /&gt;
&lt;br /&gt;
==Mnet==&lt;br /&gt;
* What, in summary, does MNET provide?&lt;br /&gt;
** MNET is an XMLRPC implementation that dispatches messages to applications on either side (with a convention for function naming).&lt;br /&gt;
** MNET has a security layer that enforces that every message is encrypted and signed (with regular key rotation).&lt;br /&gt;
** MNET provides a core set of modules to provide common functionality such as SSO, key discovery, ping, and course enrollment.&lt;br /&gt;
&lt;br /&gt;
===Moodle mnet Interfaces===&lt;br /&gt;
* existing: SSO IDP interfaces&lt;br /&gt;
** in integration v1.0, SchoolTool will only be a Service Provider and Moodle will always be the IDentity Provider&lt;br /&gt;
** returns user data sufficient to create account&lt;br /&gt;
* list_user_enrolments(user)&lt;br /&gt;
** returns a list of all enrolments for a given user&lt;br /&gt;
** SchoolTool may call this to get enrolment data ASAP when an unknown user authenticates and an account is created using user_authorise()&lt;br /&gt;
&lt;br /&gt;
===SchoolTool mnet Interfaces===&lt;br /&gt;
* fetch_user(userdata)&lt;br /&gt;
** tell SchoolTool to ask Moodle for one user&#039;s data&lt;br /&gt;
** userdata: associative array such as:&lt;br /&gt;
*** username=&amp;gt;moquist&lt;br /&gt;
*** firstname=&amp;gt;Matt&lt;br /&gt;
*** lastname=&amp;gt;Oquist&lt;br /&gt;
*** idnumber=&amp;gt;1234457 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** email=&amp;gt;moquist@majen.net&lt;br /&gt;
*** password_hash=&amp;gt;234lih23rlh2asldfjas&lt;br /&gt;
*** password_hash_algorithm=&amp;gt;md5&lt;br /&gt;
*** ircnick=&amp;gt;moquist&lt;br /&gt;
*** arbitrary_field=&amp;gt;arbitrary_data_string...&lt;br /&gt;
**** SchoolTool only cares about enough to create a login account.&lt;br /&gt;
**** SchoolTool does not care about student-editable profile fields.&lt;br /&gt;
* new_section(sectiondata)&lt;br /&gt;
** sectiondata: associative array such as:&lt;br /&gt;
*** name=&amp;gt;&amp;quot;Algebra 1 V1 Mrs. Smith: Cats and their Affectations&amp;quot;&lt;br /&gt;
*** idnumber=&amp;gt;197423 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** teacheridnumber=&amp;gt;987234 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** segment=&amp;gt;1 # a section may have more than one semester/segment/term(?)&lt;br /&gt;
* new_enrolment(enrolmentdata)&lt;br /&gt;
** create new association between user &amp;amp; section&lt;br /&gt;
** enrolmentdata: associative array such as:&lt;br /&gt;
*** sectionid=&amp;gt;197423 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** userid=&amp;gt;987234 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** role=&amp;gt;&#039;teacher&#039; # only &#039;student&#039; and &#039;teacher&#039; supported in integration v1.0&lt;br /&gt;
* new_assessment(assessmentdata)&lt;br /&gt;
** create new assessment to be displayed in grade reports&lt;br /&gt;
** assessmentdata: associative array such as:&lt;br /&gt;
*** sectionid=&amp;gt;197423 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** name=&amp;gt;&amp;quot;How to grill a logarithmic sandwich&amp;quot;&lt;br /&gt;
*** idnumber=&amp;gt;73743734 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** chapternum=&amp;gt;3&lt;br /&gt;
*** honors_required=&amp;gt;false&lt;br /&gt;
*** nonhonors_required=&amp;gt;true&lt;br /&gt;
*** extra_credit=&amp;gt;false&lt;br /&gt;
*** pointval=&amp;gt;68&lt;br /&gt;
* new_grade(gradedata)&lt;br /&gt;
** make entry in gradebook&lt;br /&gt;
** gradedata: associative array such as:&lt;br /&gt;
*** assessmentid=&amp;gt;73743734&lt;br /&gt;
*** userid=&amp;gt;2347234 # unique shared ID of student&lt;br /&gt;
*** points_earned=&amp;gt;62&lt;br /&gt;
*** excepted=&amp;gt;false&lt;br /&gt;
*** attempt_num=&amp;gt;1 # if multiple attempts are allowed&lt;br /&gt;
&lt;br /&gt;
==Phase 2==&lt;br /&gt;
* Some discussion is taking place [http://moodle.org/mod/forum/discuss.php?d=129267 here].&lt;br /&gt;
===Scenarios===&lt;br /&gt;
# Susie Sunglasses will return to Town High School for her senior year. During the last week of school in her junior year, she sits down in the computer lab, logs into Moodle, and enrolls herself in each of the 5 courses she wishes to take during the fall semester. Moodle sends information about these enrollments to SchoolTool, and when THS principal Patricia Participle logs in to SchoolTool in July she is able to see which courses Susie will be taking in the fall.&lt;br /&gt;
#:[https://docs.moodle.org/en/images_en/d/d1/Susie-and-patricia.dia Susie-and-patricia.dia source file]&lt;br /&gt;
#:[[Image:Susie-and-patricia.png|300px]]&lt;br /&gt;
# Tommy Trackstar is a new student at Town High School. He consults immediately with guidance counselor Guinevere, who logs into Moodle and enrolls him in all his chosen courses. As Tommy completes his work and grades are given (some automatically and some manually by the teacher) in Moodle, each grade is also transferred to SchoolTool, which is thereby able to generate an up-to-date progress report for Tommy at any desired point in time (past or present).&lt;br /&gt;
#:[https://docs.moodle.org/en/images_en/a/af/Tommy-and-guinevere1.dia Tommy-and-guinevere1.dia source file]&lt;br /&gt;
#:[[Image:Tommy-and-guinevere1.png|500px]]&lt;br /&gt;
# Track season comes around, and Tommy gets too busy with practice. After careful consideration of all his available options, Tommy decides to drop Mathematics of Whistling to have an extra hour to run each day. Either he or guidance counselor Guinevere unenrolls him in Moodle from Mathematics of Whistling. The unenrollment is transferred directly to SchoolTool, and Guinevere is able to enter a note and a withdrawal code to explain what happened. This withdrawal is then included on Tommy&#039;s transcript.&lt;br /&gt;
#:[https://docs.moodle.org/en/images_en/2/2b/Tommy-and-guinevere2.dia Tommy-and-guinevere2.dia source file]&lt;br /&gt;
#:[[Image:Tommy-and-guinevere2.png|500px]]&lt;br /&gt;
# Samantha Stupenda, widely rumored to be the most demanding science teacher at THS, has developed assignments for the newest chapter of the textbook she&#039;s writing (&amp;quot;Earth Science Internalized: No Escape&amp;quot;). Samantha adds each of these assignments to her course in Moodle. As she adds each assignment, it is transferred to SchoolTool as a grade item for the section, and SchoolTool will be prepared to accept grade data for each student enrolled in Samantha&#039;s course.&lt;br /&gt;
#:[https://docs.moodle.org/en/images_en/5/56/Samantha1.dia Samantha1.dia source file]&lt;br /&gt;
#:[[Image:Samantha1.png|500px]]&lt;br /&gt;
# Vera Vestibule is taking Bubble Blowing 101, which has no Moodle component at all. Guidance counselor Guinevere logs into SchoolTool and 1) creates a course (&amp;quot;Bubble Blowing 101&amp;quot;), 2) creates a section of the course (&amp;quot;Bubble Blowing 101 taught by Chewie Chomper&amp;quot;), and 3) enrolls Vera in the section. Chewie uploads in SchoolTool a spreadsheet specifying the gradeable assignments in the course. As his students complete the assignments, Chewie enters their grades in SchoolTool, which is then able to include this course and these grades in student progress reports and transcripts.&lt;br /&gt;
# Country Mouse High School has been using Moodle for the past 3 years, and many but not all of the teachers have enthusiastically created Moodle courses that they use extensively in their classrooms. However, some teachers do not have a Moodle presence at all. The principal of CMHS, Betsy Balustrade, keeps a collection of spreadsheets and other documents which she uses to plan and manage the class schedule each year. The technology director of CMHS, Cathy Colever, decides to adopt SchoolTool as the Student Information System (SIS) of CMHS. She installs SchoolTool and integrates it with their existing Moodle, and all the information in Moodle about the teachers, students, courses, enrollments, and grades is transferred to SchoolTool. Cathy provides a series of training sessions for Betsy and her administrative assistant Astra Lodge. Since not every course in the school is in Moodle, Astra enters information about some courses, teachers, and student enrollments into SchoolTool manually. After that, Betsy is able to use SchoolTool to create the schedule for each upcoming semester.&lt;br /&gt;
# Samantha Stupenda also teaches Chemistry. All her class assignments are graded in Moodle, and those grades transfer automatically to SchoolTool. But her lab assignments are not in Moodle, and Samantha creates grade items and enters those grades manually into her Chemistry sections in SchoolTool. Halfway through the school year, Samantha decides to represent those lab assignments in Moodle, and she is careful to use *exactly* the same names that she entered into SchoolTool previously. What happens?&lt;br /&gt;
&lt;br /&gt;
===Flowcharts Because We Like Them===&lt;br /&gt;
* address each of the above scenarios...&lt;br /&gt;
* show technical detail for transfer of user account(s) from Moodle to SchoolTool&lt;br /&gt;
[[Image:SchoolTool_Integration_Userdata.png|200px]]&lt;br /&gt;
* show technical detail for transfer of enrollment(s) from Moodle to SchoolTool&lt;br /&gt;
* show technical detail for transfer of grades(s) from Moodle to SchoolTool&lt;br /&gt;
&lt;br /&gt;
===Part 1: SSO===&lt;br /&gt;
====Tasks====&lt;br /&gt;
* Make Moodle aware of SchoolTool as a potential SSO peer&lt;br /&gt;
* Implement Moodle cron job to ensure all users are always maintained in SchoolTool&lt;br /&gt;
** UI: gracefully add this to existing Mnet SSO config screen if possible&lt;br /&gt;
* Implement SchoolTool SSO interfaces&lt;br /&gt;
** new_user() Mnet interface&lt;br /&gt;
** update_user() Mnet interface&lt;br /&gt;
** UI: link to configured Moodle peers&lt;br /&gt;
** UI: link back to Moodle after Moodle-&amp;gt;SchoolTool SSO login&lt;br /&gt;
** UI: Mnet SSO configuration&lt;br /&gt;
===Part 2: Enrollments===&lt;br /&gt;
====Tasks====&lt;br /&gt;
===Part 3: Grades===&lt;br /&gt;
====Tasks====&lt;br /&gt;
&lt;br /&gt;
==Misc. TODO==&lt;br /&gt;
* Matt/Tom: Find out what reports ECHS will want from SchoolTool&lt;br /&gt;
&lt;br /&gt;
* SchoolTool TODO list&lt;br /&gt;
** Create an &amp;quot;ongoing section&amp;quot; container that will contain (otherwise normal) sections that do not fit into the year/term schema.&lt;br /&gt;
*** integration v1.0 will place all Moodle-driven sections in the &amp;quot;ongoing&amp;quot; container&lt;br /&gt;
** Add enumerated status field to enrollment (e.g., Active, Withdrawn No Grade, Withdrawn Failing, Passed) This will not initially include a workflow, but simply a current state and a history of states.&lt;br /&gt;
** Add support for section history&lt;br /&gt;
*** grading history&lt;br /&gt;
*** enrollment history (including all enrollment status changes)&lt;br /&gt;
*** teacher history&lt;/div&gt;</summary>
		<author><name>Moquist</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/32/en/index.php?title=Development:SchoolTool_Integration&amp;diff=61632</id>
		<title>Development:SchoolTool Integration</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/32/en/index.php?title=Development:SchoolTool_Integration&amp;diff=61632"/>
		<updated>2009-08-15T22:06:10Z</updated>

		<summary type="html">&lt;p&gt;Moquist: /* Scenarios */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [http://schooltool.org SchoolTool] SIS project recently released version 1.0, and lots of people could benefit from a solid integration between Moodle and SchoolTool. This page is a work-in-progress specification for the first version of this integration.&lt;br /&gt;
&lt;br /&gt;
==Goal: Moodle-SchoolTool integration modeled on Moodle-Mahara integration.==&lt;br /&gt;
* SchoolTool-Mahara integration should require very little extra effort when this project is complete.&lt;br /&gt;
* SchoolTool+Moodle+Mahara will provide a complete, integrated school administration/learning/portfolio suite that will be easily installable and supportable by time-crunched education systems administrators.&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
* Completely web-based integration configuration (similar to Moodle-Mahara configuration)&lt;br /&gt;
* SSO between SchoolTool and Moodle&lt;br /&gt;
* User accounts, courses, enrolments, assignments, and grades auto-update in SchoolTool&lt;br /&gt;
* Automatic grade transfer from Moodle to SchoolTool&lt;br /&gt;
&lt;br /&gt;
==Integration v1.0 NON-Requirements==&lt;br /&gt;
* Users, courses, enrolments can originate in and be managed within SchoolTool, with Moodle updating from SchoolTool.&lt;br /&gt;
** This will be the goal of the next version of the integration.&lt;br /&gt;
&lt;br /&gt;
==Assumptions==&lt;br /&gt;
* SchoolTool is the authoritative reporting application.&lt;br /&gt;
* Moodle drives all data creation and management.&lt;br /&gt;
&lt;br /&gt;
==Supported versions==&lt;br /&gt;
* SchoolTool 1.0&lt;br /&gt;
* Moodle 1.9.5+&lt;br /&gt;
&lt;br /&gt;
==Terminology Disambiguation==&lt;br /&gt;
* course: A SchoolTool course.&lt;br /&gt;
** SchoolTool &amp;quot;course&amp;quot; has no Moodle analogue. (&amp;quot;Algebra 1&amp;quot;) can have multiple &amp;quot;sections&amp;quot; (&amp;quot;Algebra * 1 @ 9:15 taught by Mr. Smith&amp;quot;).&lt;br /&gt;
* section: A SchoolTool section, a Moodle course.&lt;br /&gt;
&lt;br /&gt;
==Background info and references==&lt;br /&gt;
* [https://docs.moodle.org/en/Grades Moodle 1.9+ gradebook]&lt;br /&gt;
* [https://docs.moodle.org/en/External_database Moodle external DB enrolment plugin ]&lt;br /&gt;
&lt;br /&gt;
==Implementation notes/ideas==&lt;br /&gt;
* The [http://git.catalyst.net.nz/mnet.git/ PHP mnet library] has been [https://code.edge.launchpad.net/~mnet-maintainers/mnet-wsgi/main ported to python.]&lt;br /&gt;
** SchoolTool will need to use this library.&lt;br /&gt;
* Moodle will need some awareness of SchoolTool in the mnet auth plugin. Not sure yet what this entails. (i.e., Mahara shows up in the list. We need SchoolTool in there, too.)&lt;br /&gt;
* Moodle will need an enrolment plugin that gets data from mnet but is otherwise modeled on the external DB enrolment plugin.&lt;br /&gt;
* Moodle will need a gradebook plugin that can pass grades to SchoolTool via mnet.&lt;br /&gt;
* integration v1.0 will not batch updates from Moodle to SchoolTool. Updates will be small and frequent.&lt;br /&gt;
&lt;br /&gt;
==Use Cases==&lt;br /&gt;
* integration v1.0: Drop SchoolTool into existing Moodle site, leave Moodle as driver of user directory and enrollment management.&lt;br /&gt;
** Accounts manually created in SchoolTool may or may not be integratable with Moodle. (Matt recommends this as a feature, but it should not be required for v1.0.)&lt;br /&gt;
** All course creation and enrollment updates must happen first in Moodle and be transferred from there to SchoolTool.&lt;br /&gt;
** Enrollment can be student-driven.&lt;br /&gt;
** An interactive enrollment in Moodle kicks off an immediate transaction to record the enrollment in schooltool.&lt;br /&gt;
* future integration version only: Drop SchoolTool into existing Moodle site, after bulk data transfer from Moodle-&amp;gt;SchoolTool, flip configuration and use SchoolTool as the authoritative user directory and/or enrollment management system.&lt;br /&gt;
** Could this be used to migrate to SchoolTool from another SIS (integrated somehow with Moodle) by way of Moodle?&lt;br /&gt;
* Start fresh with both.&lt;br /&gt;
* future integration version only: Drop Moodle into SchoolTool site.&lt;br /&gt;
** maybe not important for v1.0, might basically come for free&lt;br /&gt;
* future integration version only: Drop SchoolTool into Mahara site (and vice-versa)&lt;br /&gt;
&#039;&#039;&#039;In summary, integration v1.0 will be a Moodle-&amp;gt;SchoolTool integration. We are laying a foundation for a future bidirectional integration in which sections are created and teachers and enrollments are managed in SchoolTool, while Moodle regularly reports grades back to SchoolTool.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==User Interfaces==&lt;br /&gt;
* The integration configuration interfaces will be modeled on the existing interfaces for integrating Moodle and Mahara. See this document for a characterization of the type of admin user experience we want: [http://eduforge.org/docman/view.php/176/3200/Mahoodle.pdf Mahoodle.pdf]&lt;br /&gt;
* Moodle UIs&lt;br /&gt;
** Auth plugin config&lt;br /&gt;
** Enrolment plugin config&lt;br /&gt;
** Grade export config&lt;br /&gt;
* SchoolTool UIs&lt;br /&gt;
** similar division of config screens&lt;br /&gt;
** equivalent of Moodle&#039;s &amp;quot;Network Servers&amp;quot; block with links to SSO peers&lt;br /&gt;
** equivalent of &amp;quot;You have logged in from &amp;lt;somelink&amp;gt;&amp;quot; to go back after SSO&lt;br /&gt;
&lt;br /&gt;
==Mnet==&lt;br /&gt;
* What, in summary, does MNET provide?&lt;br /&gt;
** MNET is an XMLRPC implementation that dispatches messages to applications on either side (with a convention for function naming).&lt;br /&gt;
** MNET has a security layer that enforces that every message is encrypted and signed (with regular key rotation).&lt;br /&gt;
** MNET provides a core set of modules to provide common functionality such as SSO, key discovery, ping, and course enrollment.&lt;br /&gt;
&lt;br /&gt;
===Moodle mnet Interfaces===&lt;br /&gt;
* existing: SSO IDP interfaces&lt;br /&gt;
** in integration v1.0, SchoolTool will only be a Service Provider and Moodle will always be the IDentity Provider&lt;br /&gt;
** returns user data sufficient to create account&lt;br /&gt;
* list_user_enrolments(user)&lt;br /&gt;
** returns a list of all enrolments for a given user&lt;br /&gt;
** SchoolTool may call this to get enrolment data ASAP when an unknown user authenticates and an account is created using user_authorise()&lt;br /&gt;
&lt;br /&gt;
===SchoolTool mnet Interfaces===&lt;br /&gt;
* fetch_user(userdata)&lt;br /&gt;
** tell SchoolTool to ask Moodle for one user&#039;s data&lt;br /&gt;
** userdata: associative array such as:&lt;br /&gt;
*** username=&amp;gt;moquist&lt;br /&gt;
*** firstname=&amp;gt;Matt&lt;br /&gt;
*** lastname=&amp;gt;Oquist&lt;br /&gt;
*** idnumber=&amp;gt;1234457 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** email=&amp;gt;moquist@majen.net&lt;br /&gt;
*** password_hash=&amp;gt;234lih23rlh2asldfjas&lt;br /&gt;
*** password_hash_algorithm=&amp;gt;md5&lt;br /&gt;
*** ircnick=&amp;gt;moquist&lt;br /&gt;
*** arbitrary_field=&amp;gt;arbitrary_data_string...&lt;br /&gt;
**** SchoolTool only cares about enough to create a login account.&lt;br /&gt;
**** SchoolTool does not care about student-editable profile fields.&lt;br /&gt;
* new_section(sectiondata)&lt;br /&gt;
** sectiondata: associative array such as:&lt;br /&gt;
*** name=&amp;gt;&amp;quot;Algebra 1 V1 Mrs. Smith: Cats and their Affectations&amp;quot;&lt;br /&gt;
*** idnumber=&amp;gt;197423 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** teacheridnumber=&amp;gt;987234 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** segment=&amp;gt;1 # a section may have more than one semester/segment/term(?)&lt;br /&gt;
* new_enrolment(enrolmentdata)&lt;br /&gt;
** create new association between user &amp;amp; section&lt;br /&gt;
** enrolmentdata: associative array such as:&lt;br /&gt;
*** sectionid=&amp;gt;197423 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** userid=&amp;gt;987234 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** role=&amp;gt;&#039;teacher&#039; # only &#039;student&#039; and &#039;teacher&#039; supported in integration v1.0&lt;br /&gt;
* new_assessment(assessmentdata)&lt;br /&gt;
** create new assessment to be displayed in grade reports&lt;br /&gt;
** assessmentdata: associative array such as:&lt;br /&gt;
*** sectionid=&amp;gt;197423 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** name=&amp;gt;&amp;quot;How to grill a logarithmic sandwich&amp;quot;&lt;br /&gt;
*** idnumber=&amp;gt;73743734 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** chapternum=&amp;gt;3&lt;br /&gt;
*** honors_required=&amp;gt;false&lt;br /&gt;
*** nonhonors_required=&amp;gt;true&lt;br /&gt;
*** extra_credit=&amp;gt;false&lt;br /&gt;
*** pointval=&amp;gt;68&lt;br /&gt;
* new_grade(gradedata)&lt;br /&gt;
** make entry in gradebook&lt;br /&gt;
** gradedata: associative array such as:&lt;br /&gt;
*** assessmentid=&amp;gt;73743734&lt;br /&gt;
*** userid=&amp;gt;2347234 # unique shared ID of student&lt;br /&gt;
*** points_earned=&amp;gt;62&lt;br /&gt;
*** excepted=&amp;gt;false&lt;br /&gt;
*** attempt_num=&amp;gt;1 # if multiple attempts are allowed&lt;br /&gt;
&lt;br /&gt;
==Phase 2==&lt;br /&gt;
* Some discussion is taking place [http://moodle.org/mod/forum/discuss.php?d=129267 here].&lt;br /&gt;
===Scenarios===&lt;br /&gt;
# Susie Sunglasses will return to Town High School for her senior year. During the last week of school in her junior year, she sits down in the computer lab, logs into Moodle, and enrolls herself in each of the 5 courses she wishes to take during the fall semester. Moodle sends information about these enrollments to SchoolTool, and when THS principal Patricia Participle logs in to SchoolTool in July she is able to see which courses Susie will be taking in the fall.&lt;br /&gt;
#:[https://docs.moodle.org/en/images_en/d/d1/Susie-and-patricia.dia Susie-and-patricia.dia source file]&lt;br /&gt;
#:[[Image:Susie-and-patricia.png|300px]]&lt;br /&gt;
# Tommy Trackstar is a new student at Town High School. He consults immediately with guidance counselor Guinevere, who logs into Moodle and enrolls him in all his chosen courses. As Tommy completes his work and grades are given (some automatically and some manually by the teacher) in Moodle, each grade is also transferred to SchoolTool, which is thereby able to generate an up-to-date progress report for Tommy at any desired point in time (past or present).&lt;br /&gt;
#:[https://docs.moodle.org/en/images_en/a/af/Tommy-and-guinevere1.dia Tommy-and-guinevere1.dia source file]&lt;br /&gt;
#:[[Image:Tommy-and-guinevere1.png|500px]]&lt;br /&gt;
# Track season comes around, and Tommy gets too busy with practice. After careful consideration of all his available options, Tommy decides to drop Mathematics of Whistling to have an extra hour to run each day. Either he or guidance counselor Guinevere unenrolls him in Moodle from Mathematics of Whistling. The unenrollment is transferred directly to SchoolTool, and Guinevere is able to enter a note and a withdrawal code to explain what happened. This withdrawal is then included on Tommy&#039;s transcript.&lt;br /&gt;
#:[https://docs.moodle.org/en/images_en/2/2b/Tommy-and-guinevere2.dia Tommy-and-guinevere2.dia source file]&lt;br /&gt;
#:[[Image:Tommy-and-guinevere2.png|500px]]&lt;br /&gt;
# Samantha Stupenda, widely rumored to be the most demanding science teacher at THS, has developed assignments for the newest chapter of the textbook she&#039;s writing (&amp;quot;Earth Science Internalized: No Escape&amp;quot;). Samantha adds each of these assignments to her course in Moodle. As she adds each assignment, it is transferred to SchoolTool as a grade item for the section, and SchoolTool will be prepared to accept grade data for each student enrolled in Samantha&#039;s course.&lt;br /&gt;
#:[https://docs.moodle.org/en/images_en/5/56/Samantha1.dia Samantha1.dia source file]&lt;br /&gt;
#:[[Image:Samantha1.png|500px]]&lt;br /&gt;
# Vera Vestibule is taking Bubble Blowing 101, which has no Moodle component at all. Guidance counselor Guinevere logs into SchoolTool and 1) creates a course (&amp;quot;Bubble Blowing 101&amp;quot;), 2) creates a section of the course (&amp;quot;Bubble Blowing 101 taught by Chewie Chomper&amp;quot;), and 3) enrolls Vera in the section. Chewie uploads in SchoolTool a spreadsheet specifying the gradeable assignments in the course. As his students complete the assignments, Chewie enters their grades in SchoolTool, which is then able to include this course and these grades in student progress reports and transcripts.&lt;br /&gt;
# Country Mouse High School has been using Moodle for the past 3 years, and many but not all of the teachers have enthusiastically created Moodle courses that they use extensively in their classrooms. However, some teachers do not have a Moodle presence at all. The principal of CMHS, Betsy Balustrade, keeps a collection of spreadsheets and other documents which she uses to plan and manage the class schedule each year. The technology director of CMHS, Cathy Colever, decides to adopt SchoolTool as the Student Information System (SIS) of CMHS. She installs SchoolTool and integrates it with their existing Moodle, and all the information in Moodle about the teachers, students, courses, enrollments, and grades is transferred to SchoolTool. Cathy provides a series of training sessions for Betsy and her administrative assistant Astra Lodge. Since not every course in the school is in Moodle, Astra enters information about some courses, teachers, and student enrollments into SchoolTool manually. After that, Betsy is able to use SchoolTool to create the schedule for each upcoming semester.&lt;br /&gt;
# Samantha Stupenda also teaches Chemistry. All her class assignments are graded in Moodle, and those grades transfer automatically to SchoolTool. But her lab assignments are not in Moodle, and Samantha creates grade items and enters those grades manually into her Chemistry sections in SchoolTool. Halfway through the school year, Samantha decides to represent those lab assignments in Moodle, and she is careful to use *exactly* the same names that she entered into SchoolTool previously. What happens?&lt;br /&gt;
&lt;br /&gt;
===Flowcharts Because We Like Them===&lt;br /&gt;
* address each of the above scenarios...&lt;br /&gt;
* show technical detail for transfer of user account(s) from Moodle to SchoolTool&lt;br /&gt;
[[Image:SchoolTool_Integration_Userdata.png|200px]]&lt;br /&gt;
* show technical detail for transfer of enrollment(s) from Moodle to SchoolTool&lt;br /&gt;
* show technical detail for transfer of grades(s) from Moodle to SchoolTool&lt;br /&gt;
&lt;br /&gt;
===Part 1: SSO===&lt;br /&gt;
====Tasks====&lt;br /&gt;
* Make Moodle aware of SchoolTool as a potential SSO peer&lt;br /&gt;
* Implement Moodle cron job to ensure all users are always maintained in SchoolTool&lt;br /&gt;
** UI: gracefully add this to existing Mnet SSO config screen if possible&lt;br /&gt;
* Implement SchoolTool SSO interfaces&lt;br /&gt;
** new_user() Mnet interface&lt;br /&gt;
** update_user() Mnet interface&lt;br /&gt;
** UI: link to configured Moodle peers&lt;br /&gt;
** UI: link back to Moodle after Moodle-&amp;gt;SchoolTool SSO login&lt;br /&gt;
** UI: Mnet SSO configuration&lt;br /&gt;
===Part 2: Enrollments===&lt;br /&gt;
====Tasks====&lt;br /&gt;
===Part 3: Grades===&lt;br /&gt;
====Tasks====&lt;br /&gt;
&lt;br /&gt;
==Misc. TODO==&lt;br /&gt;
* Matt/Tom: Find out what reports ECHS will want from SchoolTool&lt;br /&gt;
&lt;br /&gt;
* SchoolTool TODO list&lt;br /&gt;
** Create an &amp;quot;ongoing section&amp;quot; container that will contain (otherwise normal) sections that do not fit into the year/term schema.&lt;br /&gt;
*** integration v1.0 will place all Moodle-driven sections in the &amp;quot;ongoing&amp;quot; container&lt;br /&gt;
** Add enumerated status field to enrollment (e.g., Active, Withdrawn No Grade, Withdrawn Failing, Passed) This will not initially include a workflow, but simply a current state and a history of states.&lt;br /&gt;
** Add support for section history&lt;br /&gt;
*** grading history&lt;br /&gt;
*** enrollment history (including all enrollment status changes)&lt;br /&gt;
*** teacher history&lt;/div&gt;</summary>
		<author><name>Moquist</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/32/en/index.php?title=Development:SchoolTool_Integration&amp;diff=61631</id>
		<title>Development:SchoolTool Integration</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/32/en/index.php?title=Development:SchoolTool_Integration&amp;diff=61631"/>
		<updated>2009-08-15T22:05:32Z</updated>

		<summary type="html">&lt;p&gt;Moquist: /* Scenarios */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [http://schooltool.org SchoolTool] SIS project recently released version 1.0, and lots of people could benefit from a solid integration between Moodle and SchoolTool. This page is a work-in-progress specification for the first version of this integration.&lt;br /&gt;
&lt;br /&gt;
==Goal: Moodle-SchoolTool integration modeled on Moodle-Mahara integration.==&lt;br /&gt;
* SchoolTool-Mahara integration should require very little extra effort when this project is complete.&lt;br /&gt;
* SchoolTool+Moodle+Mahara will provide a complete, integrated school administration/learning/portfolio suite that will be easily installable and supportable by time-crunched education systems administrators.&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
* Completely web-based integration configuration (similar to Moodle-Mahara configuration)&lt;br /&gt;
* SSO between SchoolTool and Moodle&lt;br /&gt;
* User accounts, courses, enrolments, assignments, and grades auto-update in SchoolTool&lt;br /&gt;
* Automatic grade transfer from Moodle to SchoolTool&lt;br /&gt;
&lt;br /&gt;
==Integration v1.0 NON-Requirements==&lt;br /&gt;
* Users, courses, enrolments can originate in and be managed within SchoolTool, with Moodle updating from SchoolTool.&lt;br /&gt;
** This will be the goal of the next version of the integration.&lt;br /&gt;
&lt;br /&gt;
==Assumptions==&lt;br /&gt;
* SchoolTool is the authoritative reporting application.&lt;br /&gt;
* Moodle drives all data creation and management.&lt;br /&gt;
&lt;br /&gt;
==Supported versions==&lt;br /&gt;
* SchoolTool 1.0&lt;br /&gt;
* Moodle 1.9.5+&lt;br /&gt;
&lt;br /&gt;
==Terminology Disambiguation==&lt;br /&gt;
* course: A SchoolTool course.&lt;br /&gt;
** SchoolTool &amp;quot;course&amp;quot; has no Moodle analogue. (&amp;quot;Algebra 1&amp;quot;) can have multiple &amp;quot;sections&amp;quot; (&amp;quot;Algebra * 1 @ 9:15 taught by Mr. Smith&amp;quot;).&lt;br /&gt;
* section: A SchoolTool section, a Moodle course.&lt;br /&gt;
&lt;br /&gt;
==Background info and references==&lt;br /&gt;
* [https://docs.moodle.org/en/Grades Moodle 1.9+ gradebook]&lt;br /&gt;
* [https://docs.moodle.org/en/External_database Moodle external DB enrolment plugin ]&lt;br /&gt;
&lt;br /&gt;
==Implementation notes/ideas==&lt;br /&gt;
* The [http://git.catalyst.net.nz/mnet.git/ PHP mnet library] has been [https://code.edge.launchpad.net/~mnet-maintainers/mnet-wsgi/main ported to python.]&lt;br /&gt;
** SchoolTool will need to use this library.&lt;br /&gt;
* Moodle will need some awareness of SchoolTool in the mnet auth plugin. Not sure yet what this entails. (i.e., Mahara shows up in the list. We need SchoolTool in there, too.)&lt;br /&gt;
* Moodle will need an enrolment plugin that gets data from mnet but is otherwise modeled on the external DB enrolment plugin.&lt;br /&gt;
* Moodle will need a gradebook plugin that can pass grades to SchoolTool via mnet.&lt;br /&gt;
* integration v1.0 will not batch updates from Moodle to SchoolTool. Updates will be small and frequent.&lt;br /&gt;
&lt;br /&gt;
==Use Cases==&lt;br /&gt;
* integration v1.0: Drop SchoolTool into existing Moodle site, leave Moodle as driver of user directory and enrollment management.&lt;br /&gt;
** Accounts manually created in SchoolTool may or may not be integratable with Moodle. (Matt recommends this as a feature, but it should not be required for v1.0.)&lt;br /&gt;
** All course creation and enrollment updates must happen first in Moodle and be transferred from there to SchoolTool.&lt;br /&gt;
** Enrollment can be student-driven.&lt;br /&gt;
** An interactive enrollment in Moodle kicks off an immediate transaction to record the enrollment in schooltool.&lt;br /&gt;
* future integration version only: Drop SchoolTool into existing Moodle site, after bulk data transfer from Moodle-&amp;gt;SchoolTool, flip configuration and use SchoolTool as the authoritative user directory and/or enrollment management system.&lt;br /&gt;
** Could this be used to migrate to SchoolTool from another SIS (integrated somehow with Moodle) by way of Moodle?&lt;br /&gt;
* Start fresh with both.&lt;br /&gt;
* future integration version only: Drop Moodle into SchoolTool site.&lt;br /&gt;
** maybe not important for v1.0, might basically come for free&lt;br /&gt;
* future integration version only: Drop SchoolTool into Mahara site (and vice-versa)&lt;br /&gt;
&#039;&#039;&#039;In summary, integration v1.0 will be a Moodle-&amp;gt;SchoolTool integration. We are laying a foundation for a future bidirectional integration in which sections are created and teachers and enrollments are managed in SchoolTool, while Moodle regularly reports grades back to SchoolTool.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==User Interfaces==&lt;br /&gt;
* The integration configuration interfaces will be modeled on the existing interfaces for integrating Moodle and Mahara. See this document for a characterization of the type of admin user experience we want: [http://eduforge.org/docman/view.php/176/3200/Mahoodle.pdf Mahoodle.pdf]&lt;br /&gt;
* Moodle UIs&lt;br /&gt;
** Auth plugin config&lt;br /&gt;
** Enrolment plugin config&lt;br /&gt;
** Grade export config&lt;br /&gt;
* SchoolTool UIs&lt;br /&gt;
** similar division of config screens&lt;br /&gt;
** equivalent of Moodle&#039;s &amp;quot;Network Servers&amp;quot; block with links to SSO peers&lt;br /&gt;
** equivalent of &amp;quot;You have logged in from &amp;lt;somelink&amp;gt;&amp;quot; to go back after SSO&lt;br /&gt;
&lt;br /&gt;
==Mnet==&lt;br /&gt;
* What, in summary, does MNET provide?&lt;br /&gt;
** MNET is an XMLRPC implementation that dispatches messages to applications on either side (with a convention for function naming).&lt;br /&gt;
** MNET has a security layer that enforces that every message is encrypted and signed (with regular key rotation).&lt;br /&gt;
** MNET provides a core set of modules to provide common functionality such as SSO, key discovery, ping, and course enrollment.&lt;br /&gt;
&lt;br /&gt;
===Moodle mnet Interfaces===&lt;br /&gt;
* existing: SSO IDP interfaces&lt;br /&gt;
** in integration v1.0, SchoolTool will only be a Service Provider and Moodle will always be the IDentity Provider&lt;br /&gt;
** returns user data sufficient to create account&lt;br /&gt;
* list_user_enrolments(user)&lt;br /&gt;
** returns a list of all enrolments for a given user&lt;br /&gt;
** SchoolTool may call this to get enrolment data ASAP when an unknown user authenticates and an account is created using user_authorise()&lt;br /&gt;
&lt;br /&gt;
===SchoolTool mnet Interfaces===&lt;br /&gt;
* fetch_user(userdata)&lt;br /&gt;
** tell SchoolTool to ask Moodle for one user&#039;s data&lt;br /&gt;
** userdata: associative array such as:&lt;br /&gt;
*** username=&amp;gt;moquist&lt;br /&gt;
*** firstname=&amp;gt;Matt&lt;br /&gt;
*** lastname=&amp;gt;Oquist&lt;br /&gt;
*** idnumber=&amp;gt;1234457 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** email=&amp;gt;moquist@majen.net&lt;br /&gt;
*** password_hash=&amp;gt;234lih23rlh2asldfjas&lt;br /&gt;
*** password_hash_algorithm=&amp;gt;md5&lt;br /&gt;
*** ircnick=&amp;gt;moquist&lt;br /&gt;
*** arbitrary_field=&amp;gt;arbitrary_data_string...&lt;br /&gt;
**** SchoolTool only cares about enough to create a login account.&lt;br /&gt;
**** SchoolTool does not care about student-editable profile fields.&lt;br /&gt;
* new_section(sectiondata)&lt;br /&gt;
** sectiondata: associative array such as:&lt;br /&gt;
*** name=&amp;gt;&amp;quot;Algebra 1 V1 Mrs. Smith: Cats and their Affectations&amp;quot;&lt;br /&gt;
*** idnumber=&amp;gt;197423 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** teacheridnumber=&amp;gt;987234 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** segment=&amp;gt;1 # a section may have more than one semester/segment/term(?)&lt;br /&gt;
* new_enrolment(enrolmentdata)&lt;br /&gt;
** create new association between user &amp;amp; section&lt;br /&gt;
** enrolmentdata: associative array such as:&lt;br /&gt;
*** sectionid=&amp;gt;197423 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** userid=&amp;gt;987234 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** role=&amp;gt;&#039;teacher&#039; # only &#039;student&#039; and &#039;teacher&#039; supported in integration v1.0&lt;br /&gt;
* new_assessment(assessmentdata)&lt;br /&gt;
** create new assessment to be displayed in grade reports&lt;br /&gt;
** assessmentdata: associative array such as:&lt;br /&gt;
*** sectionid=&amp;gt;197423 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** name=&amp;gt;&amp;quot;How to grill a logarithmic sandwich&amp;quot;&lt;br /&gt;
*** idnumber=&amp;gt;73743734 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** chapternum=&amp;gt;3&lt;br /&gt;
*** honors_required=&amp;gt;false&lt;br /&gt;
*** nonhonors_required=&amp;gt;true&lt;br /&gt;
*** extra_credit=&amp;gt;false&lt;br /&gt;
*** pointval=&amp;gt;68&lt;br /&gt;
* new_grade(gradedata)&lt;br /&gt;
** make entry in gradebook&lt;br /&gt;
** gradedata: associative array such as:&lt;br /&gt;
*** assessmentid=&amp;gt;73743734&lt;br /&gt;
*** userid=&amp;gt;2347234 # unique shared ID of student&lt;br /&gt;
*** points_earned=&amp;gt;62&lt;br /&gt;
*** excepted=&amp;gt;false&lt;br /&gt;
*** attempt_num=&amp;gt;1 # if multiple attempts are allowed&lt;br /&gt;
&lt;br /&gt;
==Phase 2==&lt;br /&gt;
* Some discussion is taking place [http://moodle.org/mod/forum/discuss.php?d=129267 here].&lt;br /&gt;
===Scenarios===&lt;br /&gt;
# Susie Sunglasses will return to Town High School for her senior year. During the last week of school in her junior year, she sits down in the computer lab, logs into Moodle, and enrolls herself in each of the 5 courses she wishes to take during the fall semester. Moodle sends information about these enrollments to SchoolTool, and when THS principal Patricia Participle logs in to SchoolTool in July she is able to see which courses Susie will be taking in the fall.&lt;br /&gt;
#:[https://docs.moodle.org/en/images_en/d/d1/Susie-and-patricia.dia Susie-and-patricia.dia source file]&lt;br /&gt;
#:[[Image:Susie-and-patricia.png|300px]]&lt;br /&gt;
# Tommy Trackstar is a new student at Town High School. He consults immediately with guidance counselor Guinevere, who logs into Moodle and enrolls him in all his chosen courses. As Tommy completes his work and grades are given (some automatically and some manually by the teacher) in Moodle, each grade is also transferred to SchoolTool, which is thereby able to generate an up-to-date progress report for Tommy at any desired point in time (past or present).&lt;br /&gt;
 [https://docs.moodle.org/en/images_en/a/af/Tommy-and-guinevere1.dia Tommy-and-guinevere1.dia source file]&lt;br /&gt;
 [[Image:Tommy-and-guinevere1.png|500px]]&lt;br /&gt;
# Track season comes around, and Tommy gets too busy with practice. After careful consideration of all his available options, Tommy decides to drop Mathematics of Whistling to have an extra hour to run each day. Either he or guidance counselor Guinevere unenrolls him in Moodle from Mathematics of Whistling. The unenrollment is transferred directly to SchoolTool, and Guinevere is able to enter a note and a withdrawal code to explain what happened. This withdrawal is then included on Tommy&#039;s transcript.&lt;br /&gt;
 [https://docs.moodle.org/en/images_en/2/2b/Tommy-and-guinevere2.dia Tommy-and-guinevere2.dia source file]&lt;br /&gt;
 [[Image:Tommy-and-guinevere2.png|500px]]&lt;br /&gt;
# Samantha Stupenda, widely rumored to be the most demanding science teacher at THS, has developed assignments for the newest chapter of the textbook she&#039;s writing (&amp;quot;Earth Science Internalized: No Escape&amp;quot;). Samantha adds each of these assignments to her course in Moodle. As she adds each assignment, it is transferred to SchoolTool as a grade item for the section, and SchoolTool will be prepared to accept grade data for each student enrolled in Samantha&#039;s course.&lt;br /&gt;
 [https://docs.moodle.org/en/images_en/5/56/Samantha1.dia Samantha1.dia source file]&lt;br /&gt;
 [[Image:Samantha1.png|500px]]&lt;br /&gt;
# Vera Vestibule is taking Bubble Blowing 101, which has no Moodle component at all. Guidance counselor Guinevere logs into SchoolTool and 1) creates a course (&amp;quot;Bubble Blowing 101&amp;quot;), 2) creates a section of the course (&amp;quot;Bubble Blowing 101 taught by Chewie Chomper&amp;quot;), and 3) enrolls Vera in the section. Chewie uploads in SchoolTool a spreadsheet specifying the gradeable assignments in the course. As his students complete the assignments, Chewie enters their grades in SchoolTool, which is then able to include this course and these grades in student progress reports and transcripts.&lt;br /&gt;
# Country Mouse High School has been using Moodle for the past 3 years, and many but not all of the teachers have enthusiastically created Moodle courses that they use extensively in their classrooms. However, some teachers do not have a Moodle presence at all. The principal of CMHS, Betsy Balustrade, keeps a collection of spreadsheets and other documents which she uses to plan and manage the class schedule each year. The technology director of CMHS, Cathy Colever, decides to adopt SchoolTool as the Student Information System (SIS) of CMHS. She installs SchoolTool and integrates it with their existing Moodle, and all the information in Moodle about the teachers, students, courses, enrollments, and grades is transferred to SchoolTool. Cathy provides a series of training sessions for Betsy and her administrative assistant Astra Lodge. Since not every course in the school is in Moodle, Astra enters information about some courses, teachers, and student enrollments into SchoolTool manually. After that, Betsy is able to use SchoolTool to create the schedule for each upcoming semester.&lt;br /&gt;
# Samantha Stupenda also teaches Chemistry. All her class assignments are graded in Moodle, and those grades transfer automatically to SchoolTool. But her lab assignments are not in Moodle, and Samantha creates grade items and enters those grades manually into her Chemistry sections in SchoolTool. Halfway through the school year, Samantha decides to represent those lab assignments in Moodle, and she is careful to use *exactly* the same names that she entered into SchoolTool previously. What happens?&lt;br /&gt;
&lt;br /&gt;
===Flowcharts Because We Like Them===&lt;br /&gt;
* address each of the above scenarios...&lt;br /&gt;
* show technical detail for transfer of user account(s) from Moodle to SchoolTool&lt;br /&gt;
[[Image:SchoolTool_Integration_Userdata.png|200px]]&lt;br /&gt;
* show technical detail for transfer of enrollment(s) from Moodle to SchoolTool&lt;br /&gt;
* show technical detail for transfer of grades(s) from Moodle to SchoolTool&lt;br /&gt;
&lt;br /&gt;
===Part 1: SSO===&lt;br /&gt;
====Tasks====&lt;br /&gt;
* Make Moodle aware of SchoolTool as a potential SSO peer&lt;br /&gt;
* Implement Moodle cron job to ensure all users are always maintained in SchoolTool&lt;br /&gt;
** UI: gracefully add this to existing Mnet SSO config screen if possible&lt;br /&gt;
* Implement SchoolTool SSO interfaces&lt;br /&gt;
** new_user() Mnet interface&lt;br /&gt;
** update_user() Mnet interface&lt;br /&gt;
** UI: link to configured Moodle peers&lt;br /&gt;
** UI: link back to Moodle after Moodle-&amp;gt;SchoolTool SSO login&lt;br /&gt;
** UI: Mnet SSO configuration&lt;br /&gt;
===Part 2: Enrollments===&lt;br /&gt;
====Tasks====&lt;br /&gt;
===Part 3: Grades===&lt;br /&gt;
====Tasks====&lt;br /&gt;
&lt;br /&gt;
==Misc. TODO==&lt;br /&gt;
* Matt/Tom: Find out what reports ECHS will want from SchoolTool&lt;br /&gt;
&lt;br /&gt;
* SchoolTool TODO list&lt;br /&gt;
** Create an &amp;quot;ongoing section&amp;quot; container that will contain (otherwise normal) sections that do not fit into the year/term schema.&lt;br /&gt;
*** integration v1.0 will place all Moodle-driven sections in the &amp;quot;ongoing&amp;quot; container&lt;br /&gt;
** Add enumerated status field to enrollment (e.g., Active, Withdrawn No Grade, Withdrawn Failing, Passed) This will not initially include a workflow, but simply a current state and a history of states.&lt;br /&gt;
** Add support for section history&lt;br /&gt;
*** grading history&lt;br /&gt;
*** enrollment history (including all enrollment status changes)&lt;br /&gt;
*** teacher history&lt;/div&gt;</summary>
		<author><name>Moquist</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/32/en/index.php?title=Development:SchoolTool_Integration&amp;diff=61630</id>
		<title>Development:SchoolTool Integration</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/32/en/index.php?title=Development:SchoolTool_Integration&amp;diff=61630"/>
		<updated>2009-08-15T22:05:01Z</updated>

		<summary type="html">&lt;p&gt;Moquist: /* Scenarios */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [http://schooltool.org SchoolTool] SIS project recently released version 1.0, and lots of people could benefit from a solid integration between Moodle and SchoolTool. This page is a work-in-progress specification for the first version of this integration.&lt;br /&gt;
&lt;br /&gt;
==Goal: Moodle-SchoolTool integration modeled on Moodle-Mahara integration.==&lt;br /&gt;
* SchoolTool-Mahara integration should require very little extra effort when this project is complete.&lt;br /&gt;
* SchoolTool+Moodle+Mahara will provide a complete, integrated school administration/learning/portfolio suite that will be easily installable and supportable by time-crunched education systems administrators.&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
* Completely web-based integration configuration (similar to Moodle-Mahara configuration)&lt;br /&gt;
* SSO between SchoolTool and Moodle&lt;br /&gt;
* User accounts, courses, enrolments, assignments, and grades auto-update in SchoolTool&lt;br /&gt;
* Automatic grade transfer from Moodle to SchoolTool&lt;br /&gt;
&lt;br /&gt;
==Integration v1.0 NON-Requirements==&lt;br /&gt;
* Users, courses, enrolments can originate in and be managed within SchoolTool, with Moodle updating from SchoolTool.&lt;br /&gt;
** This will be the goal of the next version of the integration.&lt;br /&gt;
&lt;br /&gt;
==Assumptions==&lt;br /&gt;
* SchoolTool is the authoritative reporting application.&lt;br /&gt;
* Moodle drives all data creation and management.&lt;br /&gt;
&lt;br /&gt;
==Supported versions==&lt;br /&gt;
* SchoolTool 1.0&lt;br /&gt;
* Moodle 1.9.5+&lt;br /&gt;
&lt;br /&gt;
==Terminology Disambiguation==&lt;br /&gt;
* course: A SchoolTool course.&lt;br /&gt;
** SchoolTool &amp;quot;course&amp;quot; has no Moodle analogue. (&amp;quot;Algebra 1&amp;quot;) can have multiple &amp;quot;sections&amp;quot; (&amp;quot;Algebra * 1 @ 9:15 taught by Mr. Smith&amp;quot;).&lt;br /&gt;
* section: A SchoolTool section, a Moodle course.&lt;br /&gt;
&lt;br /&gt;
==Background info and references==&lt;br /&gt;
* [https://docs.moodle.org/en/Grades Moodle 1.9+ gradebook]&lt;br /&gt;
* [https://docs.moodle.org/en/External_database Moodle external DB enrolment plugin ]&lt;br /&gt;
&lt;br /&gt;
==Implementation notes/ideas==&lt;br /&gt;
* The [http://git.catalyst.net.nz/mnet.git/ PHP mnet library] has been [https://code.edge.launchpad.net/~mnet-maintainers/mnet-wsgi/main ported to python.]&lt;br /&gt;
** SchoolTool will need to use this library.&lt;br /&gt;
* Moodle will need some awareness of SchoolTool in the mnet auth plugin. Not sure yet what this entails. (i.e., Mahara shows up in the list. We need SchoolTool in there, too.)&lt;br /&gt;
* Moodle will need an enrolment plugin that gets data from mnet but is otherwise modeled on the external DB enrolment plugin.&lt;br /&gt;
* Moodle will need a gradebook plugin that can pass grades to SchoolTool via mnet.&lt;br /&gt;
* integration v1.0 will not batch updates from Moodle to SchoolTool. Updates will be small and frequent.&lt;br /&gt;
&lt;br /&gt;
==Use Cases==&lt;br /&gt;
* integration v1.0: Drop SchoolTool into existing Moodle site, leave Moodle as driver of user directory and enrollment management.&lt;br /&gt;
** Accounts manually created in SchoolTool may or may not be integratable with Moodle. (Matt recommends this as a feature, but it should not be required for v1.0.)&lt;br /&gt;
** All course creation and enrollment updates must happen first in Moodle and be transferred from there to SchoolTool.&lt;br /&gt;
** Enrollment can be student-driven.&lt;br /&gt;
** An interactive enrollment in Moodle kicks off an immediate transaction to record the enrollment in schooltool.&lt;br /&gt;
* future integration version only: Drop SchoolTool into existing Moodle site, after bulk data transfer from Moodle-&amp;gt;SchoolTool, flip configuration and use SchoolTool as the authoritative user directory and/or enrollment management system.&lt;br /&gt;
** Could this be used to migrate to SchoolTool from another SIS (integrated somehow with Moodle) by way of Moodle?&lt;br /&gt;
* Start fresh with both.&lt;br /&gt;
* future integration version only: Drop Moodle into SchoolTool site.&lt;br /&gt;
** maybe not important for v1.0, might basically come for free&lt;br /&gt;
* future integration version only: Drop SchoolTool into Mahara site (and vice-versa)&lt;br /&gt;
&#039;&#039;&#039;In summary, integration v1.0 will be a Moodle-&amp;gt;SchoolTool integration. We are laying a foundation for a future bidirectional integration in which sections are created and teachers and enrollments are managed in SchoolTool, while Moodle regularly reports grades back to SchoolTool.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==User Interfaces==&lt;br /&gt;
* The integration configuration interfaces will be modeled on the existing interfaces for integrating Moodle and Mahara. See this document for a characterization of the type of admin user experience we want: [http://eduforge.org/docman/view.php/176/3200/Mahoodle.pdf Mahoodle.pdf]&lt;br /&gt;
* Moodle UIs&lt;br /&gt;
** Auth plugin config&lt;br /&gt;
** Enrolment plugin config&lt;br /&gt;
** Grade export config&lt;br /&gt;
* SchoolTool UIs&lt;br /&gt;
** similar division of config screens&lt;br /&gt;
** equivalent of Moodle&#039;s &amp;quot;Network Servers&amp;quot; block with links to SSO peers&lt;br /&gt;
** equivalent of &amp;quot;You have logged in from &amp;lt;somelink&amp;gt;&amp;quot; to go back after SSO&lt;br /&gt;
&lt;br /&gt;
==Mnet==&lt;br /&gt;
* What, in summary, does MNET provide?&lt;br /&gt;
** MNET is an XMLRPC implementation that dispatches messages to applications on either side (with a convention for function naming).&lt;br /&gt;
** MNET has a security layer that enforces that every message is encrypted and signed (with regular key rotation).&lt;br /&gt;
** MNET provides a core set of modules to provide common functionality such as SSO, key discovery, ping, and course enrollment.&lt;br /&gt;
&lt;br /&gt;
===Moodle mnet Interfaces===&lt;br /&gt;
* existing: SSO IDP interfaces&lt;br /&gt;
** in integration v1.0, SchoolTool will only be a Service Provider and Moodle will always be the IDentity Provider&lt;br /&gt;
** returns user data sufficient to create account&lt;br /&gt;
* list_user_enrolments(user)&lt;br /&gt;
** returns a list of all enrolments for a given user&lt;br /&gt;
** SchoolTool may call this to get enrolment data ASAP when an unknown user authenticates and an account is created using user_authorise()&lt;br /&gt;
&lt;br /&gt;
===SchoolTool mnet Interfaces===&lt;br /&gt;
* fetch_user(userdata)&lt;br /&gt;
** tell SchoolTool to ask Moodle for one user&#039;s data&lt;br /&gt;
** userdata: associative array such as:&lt;br /&gt;
*** username=&amp;gt;moquist&lt;br /&gt;
*** firstname=&amp;gt;Matt&lt;br /&gt;
*** lastname=&amp;gt;Oquist&lt;br /&gt;
*** idnumber=&amp;gt;1234457 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** email=&amp;gt;moquist@majen.net&lt;br /&gt;
*** password_hash=&amp;gt;234lih23rlh2asldfjas&lt;br /&gt;
*** password_hash_algorithm=&amp;gt;md5&lt;br /&gt;
*** ircnick=&amp;gt;moquist&lt;br /&gt;
*** arbitrary_field=&amp;gt;arbitrary_data_string...&lt;br /&gt;
**** SchoolTool only cares about enough to create a login account.&lt;br /&gt;
**** SchoolTool does not care about student-editable profile fields.&lt;br /&gt;
* new_section(sectiondata)&lt;br /&gt;
** sectiondata: associative array such as:&lt;br /&gt;
*** name=&amp;gt;&amp;quot;Algebra 1 V1 Mrs. Smith: Cats and their Affectations&amp;quot;&lt;br /&gt;
*** idnumber=&amp;gt;197423 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** teacheridnumber=&amp;gt;987234 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** segment=&amp;gt;1 # a section may have more than one semester/segment/term(?)&lt;br /&gt;
* new_enrolment(enrolmentdata)&lt;br /&gt;
** create new association between user &amp;amp; section&lt;br /&gt;
** enrolmentdata: associative array such as:&lt;br /&gt;
*** sectionid=&amp;gt;197423 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** userid=&amp;gt;987234 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** role=&amp;gt;&#039;teacher&#039; # only &#039;student&#039; and &#039;teacher&#039; supported in integration v1.0&lt;br /&gt;
* new_assessment(assessmentdata)&lt;br /&gt;
** create new assessment to be displayed in grade reports&lt;br /&gt;
** assessmentdata: associative array such as:&lt;br /&gt;
*** sectionid=&amp;gt;197423 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** name=&amp;gt;&amp;quot;How to grill a logarithmic sandwich&amp;quot;&lt;br /&gt;
*** idnumber=&amp;gt;73743734 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** chapternum=&amp;gt;3&lt;br /&gt;
*** honors_required=&amp;gt;false&lt;br /&gt;
*** nonhonors_required=&amp;gt;true&lt;br /&gt;
*** extra_credit=&amp;gt;false&lt;br /&gt;
*** pointval=&amp;gt;68&lt;br /&gt;
* new_grade(gradedata)&lt;br /&gt;
** make entry in gradebook&lt;br /&gt;
** gradedata: associative array such as:&lt;br /&gt;
*** assessmentid=&amp;gt;73743734&lt;br /&gt;
*** userid=&amp;gt;2347234 # unique shared ID of student&lt;br /&gt;
*** points_earned=&amp;gt;62&lt;br /&gt;
*** excepted=&amp;gt;false&lt;br /&gt;
*** attempt_num=&amp;gt;1 # if multiple attempts are allowed&lt;br /&gt;
&lt;br /&gt;
==Phase 2==&lt;br /&gt;
* Some discussion is taking place [http://moodle.org/mod/forum/discuss.php?d=129267 here].&lt;br /&gt;
===Scenarios===&lt;br /&gt;
# Susie Sunglasses will return to Town High School for her senior year. During the last week of school in her junior year, she sits down in the computer lab, logs into Moodle, and enrolls herself in each of the 5 courses she wishes to take during the fall semester. Moodle sends information about these enrollments to SchoolTool, and when THS principal Patricia Participle logs in to SchoolTool in July she is able to see which courses Susie will be taking in the fall.&lt;br /&gt;
 [https://docs.moodle.org/en/images_en/d/d1/Susie-and-patricia.dia Susie-and-patricia.dia source file]&lt;br /&gt;
 [[Image:Susie-and-patricia.png|300px]]&lt;br /&gt;
#:&lt;br /&gt;
# Tommy Trackstar is a new student at Town High School. He consults immediately with guidance counselor Guinevere, who logs into Moodle and enrolls him in all his chosen courses. As Tommy completes his work and grades are given (some automatically and some manually by the teacher) in Moodle, each grade is also transferred to SchoolTool, which is thereby able to generate an up-to-date progress report for Tommy at any desired point in time (past or present).&lt;br /&gt;
 [https://docs.moodle.org/en/images_en/a/af/Tommy-and-guinevere1.dia Tommy-and-guinevere1.dia source file]&lt;br /&gt;
 [[Image:Tommy-and-guinevere1.png|500px]]&lt;br /&gt;
# Track season comes around, and Tommy gets too busy with practice. After careful consideration of all his available options, Tommy decides to drop Mathematics of Whistling to have an extra hour to run each day. Either he or guidance counselor Guinevere unenrolls him in Moodle from Mathematics of Whistling. The unenrollment is transferred directly to SchoolTool, and Guinevere is able to enter a note and a withdrawal code to explain what happened. This withdrawal is then included on Tommy&#039;s transcript.&lt;br /&gt;
 [https://docs.moodle.org/en/images_en/2/2b/Tommy-and-guinevere2.dia Tommy-and-guinevere2.dia source file]&lt;br /&gt;
 [[Image:Tommy-and-guinevere2.png|500px]]&lt;br /&gt;
# Samantha Stupenda, widely rumored to be the most demanding science teacher at THS, has developed assignments for the newest chapter of the textbook she&#039;s writing (&amp;quot;Earth Science Internalized: No Escape&amp;quot;). Samantha adds each of these assignments to her course in Moodle. As she adds each assignment, it is transferred to SchoolTool as a grade item for the section, and SchoolTool will be prepared to accept grade data for each student enrolled in Samantha&#039;s course.&lt;br /&gt;
 [https://docs.moodle.org/en/images_en/5/56/Samantha1.dia Samantha1.dia source file]&lt;br /&gt;
 [[Image:Samantha1.png|500px]]&lt;br /&gt;
# Vera Vestibule is taking Bubble Blowing 101, which has no Moodle component at all. Guidance counselor Guinevere logs into SchoolTool and 1) creates a course (&amp;quot;Bubble Blowing 101&amp;quot;), 2) creates a section of the course (&amp;quot;Bubble Blowing 101 taught by Chewie Chomper&amp;quot;), and 3) enrolls Vera in the section. Chewie uploads in SchoolTool a spreadsheet specifying the gradeable assignments in the course. As his students complete the assignments, Chewie enters their grades in SchoolTool, which is then able to include this course and these grades in student progress reports and transcripts.&lt;br /&gt;
# Country Mouse High School has been using Moodle for the past 3 years, and many but not all of the teachers have enthusiastically created Moodle courses that they use extensively in their classrooms. However, some teachers do not have a Moodle presence at all. The principal of CMHS, Betsy Balustrade, keeps a collection of spreadsheets and other documents which she uses to plan and manage the class schedule each year. The technology director of CMHS, Cathy Colever, decides to adopt SchoolTool as the Student Information System (SIS) of CMHS. She installs SchoolTool and integrates it with their existing Moodle, and all the information in Moodle about the teachers, students, courses, enrollments, and grades is transferred to SchoolTool. Cathy provides a series of training sessions for Betsy and her administrative assistant Astra Lodge. Since not every course in the school is in Moodle, Astra enters information about some courses, teachers, and student enrollments into SchoolTool manually. After that, Betsy is able to use SchoolTool to create the schedule for each upcoming semester.&lt;br /&gt;
# Samantha Stupenda also teaches Chemistry. All her class assignments are graded in Moodle, and those grades transfer automatically to SchoolTool. But her lab assignments are not in Moodle, and Samantha creates grade items and enters those grades manually into her Chemistry sections in SchoolTool. Halfway through the school year, Samantha decides to represent those lab assignments in Moodle, and she is careful to use *exactly* the same names that she entered into SchoolTool previously. What happens?&lt;br /&gt;
&lt;br /&gt;
===Flowcharts Because We Like Them===&lt;br /&gt;
* address each of the above scenarios...&lt;br /&gt;
* show technical detail for transfer of user account(s) from Moodle to SchoolTool&lt;br /&gt;
[[Image:SchoolTool_Integration_Userdata.png|200px]]&lt;br /&gt;
* show technical detail for transfer of enrollment(s) from Moodle to SchoolTool&lt;br /&gt;
* show technical detail for transfer of grades(s) from Moodle to SchoolTool&lt;br /&gt;
&lt;br /&gt;
===Part 1: SSO===&lt;br /&gt;
====Tasks====&lt;br /&gt;
* Make Moodle aware of SchoolTool as a potential SSO peer&lt;br /&gt;
* Implement Moodle cron job to ensure all users are always maintained in SchoolTool&lt;br /&gt;
** UI: gracefully add this to existing Mnet SSO config screen if possible&lt;br /&gt;
* Implement SchoolTool SSO interfaces&lt;br /&gt;
** new_user() Mnet interface&lt;br /&gt;
** update_user() Mnet interface&lt;br /&gt;
** UI: link to configured Moodle peers&lt;br /&gt;
** UI: link back to Moodle after Moodle-&amp;gt;SchoolTool SSO login&lt;br /&gt;
** UI: Mnet SSO configuration&lt;br /&gt;
===Part 2: Enrollments===&lt;br /&gt;
====Tasks====&lt;br /&gt;
===Part 3: Grades===&lt;br /&gt;
====Tasks====&lt;br /&gt;
&lt;br /&gt;
==Misc. TODO==&lt;br /&gt;
* Matt/Tom: Find out what reports ECHS will want from SchoolTool&lt;br /&gt;
&lt;br /&gt;
* SchoolTool TODO list&lt;br /&gt;
** Create an &amp;quot;ongoing section&amp;quot; container that will contain (otherwise normal) sections that do not fit into the year/term schema.&lt;br /&gt;
*** integration v1.0 will place all Moodle-driven sections in the &amp;quot;ongoing&amp;quot; container&lt;br /&gt;
** Add enumerated status field to enrollment (e.g., Active, Withdrawn No Grade, Withdrawn Failing, Passed) This will not initially include a workflow, but simply a current state and a history of states.&lt;br /&gt;
** Add support for section history&lt;br /&gt;
*** grading history&lt;br /&gt;
*** enrollment history (including all enrollment status changes)&lt;br /&gt;
*** teacher history&lt;/div&gt;</summary>
		<author><name>Moquist</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/32/en/index.php?title=File:Samantha1.png&amp;diff=61629</id>
		<title>File:Samantha1.png</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/32/en/index.php?title=File:Samantha1.png&amp;diff=61629"/>
		<updated>2009-08-15T22:04:34Z</updated>

		<summary type="html">&lt;p&gt;Moquist: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Moquist</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/32/en/index.php?title=Development:SchoolTool_Integration&amp;diff=61628</id>
		<title>Development:SchoolTool Integration</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/32/en/index.php?title=Development:SchoolTool_Integration&amp;diff=61628"/>
		<updated>2009-08-15T22:03:30Z</updated>

		<summary type="html">&lt;p&gt;Moquist: /* Scenarios */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [http://schooltool.org SchoolTool] SIS project recently released version 1.0, and lots of people could benefit from a solid integration between Moodle and SchoolTool. This page is a work-in-progress specification for the first version of this integration.&lt;br /&gt;
&lt;br /&gt;
==Goal: Moodle-SchoolTool integration modeled on Moodle-Mahara integration.==&lt;br /&gt;
* SchoolTool-Mahara integration should require very little extra effort when this project is complete.&lt;br /&gt;
* SchoolTool+Moodle+Mahara will provide a complete, integrated school administration/learning/portfolio suite that will be easily installable and supportable by time-crunched education systems administrators.&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
* Completely web-based integration configuration (similar to Moodle-Mahara configuration)&lt;br /&gt;
* SSO between SchoolTool and Moodle&lt;br /&gt;
* User accounts, courses, enrolments, assignments, and grades auto-update in SchoolTool&lt;br /&gt;
* Automatic grade transfer from Moodle to SchoolTool&lt;br /&gt;
&lt;br /&gt;
==Integration v1.0 NON-Requirements==&lt;br /&gt;
* Users, courses, enrolments can originate in and be managed within SchoolTool, with Moodle updating from SchoolTool.&lt;br /&gt;
** This will be the goal of the next version of the integration.&lt;br /&gt;
&lt;br /&gt;
==Assumptions==&lt;br /&gt;
* SchoolTool is the authoritative reporting application.&lt;br /&gt;
* Moodle drives all data creation and management.&lt;br /&gt;
&lt;br /&gt;
==Supported versions==&lt;br /&gt;
* SchoolTool 1.0&lt;br /&gt;
* Moodle 1.9.5+&lt;br /&gt;
&lt;br /&gt;
==Terminology Disambiguation==&lt;br /&gt;
* course: A SchoolTool course.&lt;br /&gt;
** SchoolTool &amp;quot;course&amp;quot; has no Moodle analogue. (&amp;quot;Algebra 1&amp;quot;) can have multiple &amp;quot;sections&amp;quot; (&amp;quot;Algebra * 1 @ 9:15 taught by Mr. Smith&amp;quot;).&lt;br /&gt;
* section: A SchoolTool section, a Moodle course.&lt;br /&gt;
&lt;br /&gt;
==Background info and references==&lt;br /&gt;
* [https://docs.moodle.org/en/Grades Moodle 1.9+ gradebook]&lt;br /&gt;
* [https://docs.moodle.org/en/External_database Moodle external DB enrolment plugin ]&lt;br /&gt;
&lt;br /&gt;
==Implementation notes/ideas==&lt;br /&gt;
* The [http://git.catalyst.net.nz/mnet.git/ PHP mnet library] has been [https://code.edge.launchpad.net/~mnet-maintainers/mnet-wsgi/main ported to python.]&lt;br /&gt;
** SchoolTool will need to use this library.&lt;br /&gt;
* Moodle will need some awareness of SchoolTool in the mnet auth plugin. Not sure yet what this entails. (i.e., Mahara shows up in the list. We need SchoolTool in there, too.)&lt;br /&gt;
* Moodle will need an enrolment plugin that gets data from mnet but is otherwise modeled on the external DB enrolment plugin.&lt;br /&gt;
* Moodle will need a gradebook plugin that can pass grades to SchoolTool via mnet.&lt;br /&gt;
* integration v1.0 will not batch updates from Moodle to SchoolTool. Updates will be small and frequent.&lt;br /&gt;
&lt;br /&gt;
==Use Cases==&lt;br /&gt;
* integration v1.0: Drop SchoolTool into existing Moodle site, leave Moodle as driver of user directory and enrollment management.&lt;br /&gt;
** Accounts manually created in SchoolTool may or may not be integratable with Moodle. (Matt recommends this as a feature, but it should not be required for v1.0.)&lt;br /&gt;
** All course creation and enrollment updates must happen first in Moodle and be transferred from there to SchoolTool.&lt;br /&gt;
** Enrollment can be student-driven.&lt;br /&gt;
** An interactive enrollment in Moodle kicks off an immediate transaction to record the enrollment in schooltool.&lt;br /&gt;
* future integration version only: Drop SchoolTool into existing Moodle site, after bulk data transfer from Moodle-&amp;gt;SchoolTool, flip configuration and use SchoolTool as the authoritative user directory and/or enrollment management system.&lt;br /&gt;
** Could this be used to migrate to SchoolTool from another SIS (integrated somehow with Moodle) by way of Moodle?&lt;br /&gt;
* Start fresh with both.&lt;br /&gt;
* future integration version only: Drop Moodle into SchoolTool site.&lt;br /&gt;
** maybe not important for v1.0, might basically come for free&lt;br /&gt;
* future integration version only: Drop SchoolTool into Mahara site (and vice-versa)&lt;br /&gt;
&#039;&#039;&#039;In summary, integration v1.0 will be a Moodle-&amp;gt;SchoolTool integration. We are laying a foundation for a future bidirectional integration in which sections are created and teachers and enrollments are managed in SchoolTool, while Moodle regularly reports grades back to SchoolTool.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==User Interfaces==&lt;br /&gt;
* The integration configuration interfaces will be modeled on the existing interfaces for integrating Moodle and Mahara. See this document for a characterization of the type of admin user experience we want: [http://eduforge.org/docman/view.php/176/3200/Mahoodle.pdf Mahoodle.pdf]&lt;br /&gt;
* Moodle UIs&lt;br /&gt;
** Auth plugin config&lt;br /&gt;
** Enrolment plugin config&lt;br /&gt;
** Grade export config&lt;br /&gt;
* SchoolTool UIs&lt;br /&gt;
** similar division of config screens&lt;br /&gt;
** equivalent of Moodle&#039;s &amp;quot;Network Servers&amp;quot; block with links to SSO peers&lt;br /&gt;
** equivalent of &amp;quot;You have logged in from &amp;lt;somelink&amp;gt;&amp;quot; to go back after SSO&lt;br /&gt;
&lt;br /&gt;
==Mnet==&lt;br /&gt;
* What, in summary, does MNET provide?&lt;br /&gt;
** MNET is an XMLRPC implementation that dispatches messages to applications on either side (with a convention for function naming).&lt;br /&gt;
** MNET has a security layer that enforces that every message is encrypted and signed (with regular key rotation).&lt;br /&gt;
** MNET provides a core set of modules to provide common functionality such as SSO, key discovery, ping, and course enrollment.&lt;br /&gt;
&lt;br /&gt;
===Moodle mnet Interfaces===&lt;br /&gt;
* existing: SSO IDP interfaces&lt;br /&gt;
** in integration v1.0, SchoolTool will only be a Service Provider and Moodle will always be the IDentity Provider&lt;br /&gt;
** returns user data sufficient to create account&lt;br /&gt;
* list_user_enrolments(user)&lt;br /&gt;
** returns a list of all enrolments for a given user&lt;br /&gt;
** SchoolTool may call this to get enrolment data ASAP when an unknown user authenticates and an account is created using user_authorise()&lt;br /&gt;
&lt;br /&gt;
===SchoolTool mnet Interfaces===&lt;br /&gt;
* fetch_user(userdata)&lt;br /&gt;
** tell SchoolTool to ask Moodle for one user&#039;s data&lt;br /&gt;
** userdata: associative array such as:&lt;br /&gt;
*** username=&amp;gt;moquist&lt;br /&gt;
*** firstname=&amp;gt;Matt&lt;br /&gt;
*** lastname=&amp;gt;Oquist&lt;br /&gt;
*** idnumber=&amp;gt;1234457 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** email=&amp;gt;moquist@majen.net&lt;br /&gt;
*** password_hash=&amp;gt;234lih23rlh2asldfjas&lt;br /&gt;
*** password_hash_algorithm=&amp;gt;md5&lt;br /&gt;
*** ircnick=&amp;gt;moquist&lt;br /&gt;
*** arbitrary_field=&amp;gt;arbitrary_data_string...&lt;br /&gt;
**** SchoolTool only cares about enough to create a login account.&lt;br /&gt;
**** SchoolTool does not care about student-editable profile fields.&lt;br /&gt;
* new_section(sectiondata)&lt;br /&gt;
** sectiondata: associative array such as:&lt;br /&gt;
*** name=&amp;gt;&amp;quot;Algebra 1 V1 Mrs. Smith: Cats and their Affectations&amp;quot;&lt;br /&gt;
*** idnumber=&amp;gt;197423 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** teacheridnumber=&amp;gt;987234 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** segment=&amp;gt;1 # a section may have more than one semester/segment/term(?)&lt;br /&gt;
* new_enrolment(enrolmentdata)&lt;br /&gt;
** create new association between user &amp;amp; section&lt;br /&gt;
** enrolmentdata: associative array such as:&lt;br /&gt;
*** sectionid=&amp;gt;197423 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** userid=&amp;gt;987234 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** role=&amp;gt;&#039;teacher&#039; # only &#039;student&#039; and &#039;teacher&#039; supported in integration v1.0&lt;br /&gt;
* new_assessment(assessmentdata)&lt;br /&gt;
** create new assessment to be displayed in grade reports&lt;br /&gt;
** assessmentdata: associative array such as:&lt;br /&gt;
*** sectionid=&amp;gt;197423 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** name=&amp;gt;&amp;quot;How to grill a logarithmic sandwich&amp;quot;&lt;br /&gt;
*** idnumber=&amp;gt;73743734 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** chapternum=&amp;gt;3&lt;br /&gt;
*** honors_required=&amp;gt;false&lt;br /&gt;
*** nonhonors_required=&amp;gt;true&lt;br /&gt;
*** extra_credit=&amp;gt;false&lt;br /&gt;
*** pointval=&amp;gt;68&lt;br /&gt;
* new_grade(gradedata)&lt;br /&gt;
** make entry in gradebook&lt;br /&gt;
** gradedata: associative array such as:&lt;br /&gt;
*** assessmentid=&amp;gt;73743734&lt;br /&gt;
*** userid=&amp;gt;2347234 # unique shared ID of student&lt;br /&gt;
*** points_earned=&amp;gt;62&lt;br /&gt;
*** excepted=&amp;gt;false&lt;br /&gt;
*** attempt_num=&amp;gt;1 # if multiple attempts are allowed&lt;br /&gt;
&lt;br /&gt;
==Phase 2==&lt;br /&gt;
* Some discussion is taking place [http://moodle.org/mod/forum/discuss.php?d=129267 here].&lt;br /&gt;
===Scenarios===&lt;br /&gt;
# Susie Sunglasses will return to Town High School for her senior year. During the last week of school in her junior year, she sits down in the computer lab, logs into Moodle, and enrolls herself in each of the 5 courses she wishes to take during the fall semester. Moodle sends information about these enrollments to SchoolTool, and when THS principal Patricia Participle logs in to SchoolTool in July she is able to see which courses Susie will be taking in the fall.&lt;br /&gt;
 [https://docs.moodle.org/en/images_en/d/d1/Susie-and-patricia.dia Susie-and-patricia.dia source file]&lt;br /&gt;
 [[Image:Susie-and-patricia.png|300px]]&lt;br /&gt;
# Tommy Trackstar is a new student at Town High School. He consults immediately with guidance counselor Guinevere, who logs into Moodle and enrolls him in all his chosen courses. As Tommy completes his work and grades are given (some automatically and some manually by the teacher) in Moodle, each grade is also transferred to SchoolTool, which is thereby able to generate an up-to-date progress report for Tommy at any desired point in time (past or present).&lt;br /&gt;
 [https://docs.moodle.org/en/images_en/a/af/Tommy-and-guinevere1.dia Tommy-and-guinevere1.dia source file]&lt;br /&gt;
 [[Image:Tommy-and-guinevere1.png|500px]]&lt;br /&gt;
# Track season comes around, and Tommy gets too busy with practice. After careful consideration of all his available options, Tommy decides to drop Mathematics of Whistling to have an extra hour to run each day. Either he or guidance counselor Guinevere unenrolls him in Moodle from Mathematics of Whistling. The unenrollment is transferred directly to SchoolTool, and Guinevere is able to enter a note and a withdrawal code to explain what happened. This withdrawal is then included on Tommy&#039;s transcript.&lt;br /&gt;
 [https://docs.moodle.org/en/images_en/2/2b/Tommy-and-guinevere2.dia Tommy-and-guinevere2.dia source file]&lt;br /&gt;
 [[Image:Tommy-and-guinevere2.png|500px]]&lt;br /&gt;
# Samantha Stupenda, widely rumored to be the most demanding science teacher at THS, has developed assignments for the newest chapter of the textbook she&#039;s writing (&amp;quot;Earth Science Internalized: No Escape&amp;quot;). Samantha adds each of these assignments to her course in Moodle. As she adds each assignment, it is transferred to SchoolTool as a grade item for the section, and SchoolTool will be prepared to accept grade data for each student enrolled in Samantha&#039;s course.&lt;br /&gt;
 [https://docs.moodle.org/en/images_en/5/56/Samantha1.dia Samantha1.dia source file]&lt;br /&gt;
 [[Image:Samantha1.png|500px]]&lt;br /&gt;
# Vera Vestibule is taking Bubble Blowing 101, which has no Moodle component at all. Guidance counselor Guinevere logs into SchoolTool and 1) creates a course (&amp;quot;Bubble Blowing 101&amp;quot;), 2) creates a section of the course (&amp;quot;Bubble Blowing 101 taught by Chewie Chomper&amp;quot;), and 3) enrolls Vera in the section. Chewie uploads in SchoolTool a spreadsheet specifying the gradeable assignments in the course. As his students complete the assignments, Chewie enters their grades in SchoolTool, which is then able to include this course and these grades in student progress reports and transcripts.&lt;br /&gt;
# Country Mouse High School has been using Moodle for the past 3 years, and many but not all of the teachers have enthusiastically created Moodle courses that they use extensively in their classrooms. However, some teachers do not have a Moodle presence at all. The principal of CMHS, Betsy Balustrade, keeps a collection of spreadsheets and other documents which she uses to plan and manage the class schedule each year. The technology director of CMHS, Cathy Colever, decides to adopt SchoolTool as the Student Information System (SIS) of CMHS. She installs SchoolTool and integrates it with their existing Moodle, and all the information in Moodle about the teachers, students, courses, enrollments, and grades is transferred to SchoolTool. Cathy provides a series of training sessions for Betsy and her administrative assistant Astra Lodge. Since not every course in the school is in Moodle, Astra enters information about some courses, teachers, and student enrollments into SchoolTool manually. After that, Betsy is able to use SchoolTool to create the schedule for each upcoming semester.&lt;br /&gt;
# Samantha Stupenda also teaches Chemistry. All her class assignments are graded in Moodle, and those grades transfer automatically to SchoolTool. But her lab assignments are not in Moodle, and Samantha creates grade items and enters those grades manually into her Chemistry sections in SchoolTool. Halfway through the school year, Samantha decides to represent those lab assignments in Moodle, and she is careful to use *exactly* the same names that she entered into SchoolTool previously. What happens?&lt;br /&gt;
&lt;br /&gt;
===Flowcharts Because We Like Them===&lt;br /&gt;
* address each of the above scenarios...&lt;br /&gt;
* show technical detail for transfer of user account(s) from Moodle to SchoolTool&lt;br /&gt;
[[Image:SchoolTool_Integration_Userdata.png|200px]]&lt;br /&gt;
* show technical detail for transfer of enrollment(s) from Moodle to SchoolTool&lt;br /&gt;
* show technical detail for transfer of grades(s) from Moodle to SchoolTool&lt;br /&gt;
&lt;br /&gt;
===Part 1: SSO===&lt;br /&gt;
====Tasks====&lt;br /&gt;
* Make Moodle aware of SchoolTool as a potential SSO peer&lt;br /&gt;
* Implement Moodle cron job to ensure all users are always maintained in SchoolTool&lt;br /&gt;
** UI: gracefully add this to existing Mnet SSO config screen if possible&lt;br /&gt;
* Implement SchoolTool SSO interfaces&lt;br /&gt;
** new_user() Mnet interface&lt;br /&gt;
** update_user() Mnet interface&lt;br /&gt;
** UI: link to configured Moodle peers&lt;br /&gt;
** UI: link back to Moodle after Moodle-&amp;gt;SchoolTool SSO login&lt;br /&gt;
** UI: Mnet SSO configuration&lt;br /&gt;
===Part 2: Enrollments===&lt;br /&gt;
====Tasks====&lt;br /&gt;
===Part 3: Grades===&lt;br /&gt;
====Tasks====&lt;br /&gt;
&lt;br /&gt;
==Misc. TODO==&lt;br /&gt;
* Matt/Tom: Find out what reports ECHS will want from SchoolTool&lt;br /&gt;
&lt;br /&gt;
* SchoolTool TODO list&lt;br /&gt;
** Create an &amp;quot;ongoing section&amp;quot; container that will contain (otherwise normal) sections that do not fit into the year/term schema.&lt;br /&gt;
*** integration v1.0 will place all Moodle-driven sections in the &amp;quot;ongoing&amp;quot; container&lt;br /&gt;
** Add enumerated status field to enrollment (e.g., Active, Withdrawn No Grade, Withdrawn Failing, Passed) This will not initially include a workflow, but simply a current state and a history of states.&lt;br /&gt;
** Add support for section history&lt;br /&gt;
*** grading history&lt;br /&gt;
*** enrollment history (including all enrollment status changes)&lt;br /&gt;
*** teacher history&lt;/div&gt;</summary>
		<author><name>Moquist</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/32/en/index.php?title=File:Samantha1.dia&amp;diff=61627</id>
		<title>File:Samantha1.dia</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/32/en/index.php?title=File:Samantha1.dia&amp;diff=61627"/>
		<updated>2009-08-15T22:02:48Z</updated>

		<summary type="html">&lt;p&gt;Moquist: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Moquist</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/32/en/index.php?title=Development:SchoolTool_Integration&amp;diff=61626</id>
		<title>Development:SchoolTool Integration</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/32/en/index.php?title=Development:SchoolTool_Integration&amp;diff=61626"/>
		<updated>2009-08-15T22:01:27Z</updated>

		<summary type="html">&lt;p&gt;Moquist: /* Scenarios */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [http://schooltool.org SchoolTool] SIS project recently released version 1.0, and lots of people could benefit from a solid integration between Moodle and SchoolTool. This page is a work-in-progress specification for the first version of this integration.&lt;br /&gt;
&lt;br /&gt;
==Goal: Moodle-SchoolTool integration modeled on Moodle-Mahara integration.==&lt;br /&gt;
* SchoolTool-Mahara integration should require very little extra effort when this project is complete.&lt;br /&gt;
* SchoolTool+Moodle+Mahara will provide a complete, integrated school administration/learning/portfolio suite that will be easily installable and supportable by time-crunched education systems administrators.&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
* Completely web-based integration configuration (similar to Moodle-Mahara configuration)&lt;br /&gt;
* SSO between SchoolTool and Moodle&lt;br /&gt;
* User accounts, courses, enrolments, assignments, and grades auto-update in SchoolTool&lt;br /&gt;
* Automatic grade transfer from Moodle to SchoolTool&lt;br /&gt;
&lt;br /&gt;
==Integration v1.0 NON-Requirements==&lt;br /&gt;
* Users, courses, enrolments can originate in and be managed within SchoolTool, with Moodle updating from SchoolTool.&lt;br /&gt;
** This will be the goal of the next version of the integration.&lt;br /&gt;
&lt;br /&gt;
==Assumptions==&lt;br /&gt;
* SchoolTool is the authoritative reporting application.&lt;br /&gt;
* Moodle drives all data creation and management.&lt;br /&gt;
&lt;br /&gt;
==Supported versions==&lt;br /&gt;
* SchoolTool 1.0&lt;br /&gt;
* Moodle 1.9.5+&lt;br /&gt;
&lt;br /&gt;
==Terminology Disambiguation==&lt;br /&gt;
* course: A SchoolTool course.&lt;br /&gt;
** SchoolTool &amp;quot;course&amp;quot; has no Moodle analogue. (&amp;quot;Algebra 1&amp;quot;) can have multiple &amp;quot;sections&amp;quot; (&amp;quot;Algebra * 1 @ 9:15 taught by Mr. Smith&amp;quot;).&lt;br /&gt;
* section: A SchoolTool section, a Moodle course.&lt;br /&gt;
&lt;br /&gt;
==Background info and references==&lt;br /&gt;
* [https://docs.moodle.org/en/Grades Moodle 1.9+ gradebook]&lt;br /&gt;
* [https://docs.moodle.org/en/External_database Moodle external DB enrolment plugin ]&lt;br /&gt;
&lt;br /&gt;
==Implementation notes/ideas==&lt;br /&gt;
* The [http://git.catalyst.net.nz/mnet.git/ PHP mnet library] has been [https://code.edge.launchpad.net/~mnet-maintainers/mnet-wsgi/main ported to python.]&lt;br /&gt;
** SchoolTool will need to use this library.&lt;br /&gt;
* Moodle will need some awareness of SchoolTool in the mnet auth plugin. Not sure yet what this entails. (i.e., Mahara shows up in the list. We need SchoolTool in there, too.)&lt;br /&gt;
* Moodle will need an enrolment plugin that gets data from mnet but is otherwise modeled on the external DB enrolment plugin.&lt;br /&gt;
* Moodle will need a gradebook plugin that can pass grades to SchoolTool via mnet.&lt;br /&gt;
* integration v1.0 will not batch updates from Moodle to SchoolTool. Updates will be small and frequent.&lt;br /&gt;
&lt;br /&gt;
==Use Cases==&lt;br /&gt;
* integration v1.0: Drop SchoolTool into existing Moodle site, leave Moodle as driver of user directory and enrollment management.&lt;br /&gt;
** Accounts manually created in SchoolTool may or may not be integratable with Moodle. (Matt recommends this as a feature, but it should not be required for v1.0.)&lt;br /&gt;
** All course creation and enrollment updates must happen first in Moodle and be transferred from there to SchoolTool.&lt;br /&gt;
** Enrollment can be student-driven.&lt;br /&gt;
** An interactive enrollment in Moodle kicks off an immediate transaction to record the enrollment in schooltool.&lt;br /&gt;
* future integration version only: Drop SchoolTool into existing Moodle site, after bulk data transfer from Moodle-&amp;gt;SchoolTool, flip configuration and use SchoolTool as the authoritative user directory and/or enrollment management system.&lt;br /&gt;
** Could this be used to migrate to SchoolTool from another SIS (integrated somehow with Moodle) by way of Moodle?&lt;br /&gt;
* Start fresh with both.&lt;br /&gt;
* future integration version only: Drop Moodle into SchoolTool site.&lt;br /&gt;
** maybe not important for v1.0, might basically come for free&lt;br /&gt;
* future integration version only: Drop SchoolTool into Mahara site (and vice-versa)&lt;br /&gt;
&#039;&#039;&#039;In summary, integration v1.0 will be a Moodle-&amp;gt;SchoolTool integration. We are laying a foundation for a future bidirectional integration in which sections are created and teachers and enrollments are managed in SchoolTool, while Moodle regularly reports grades back to SchoolTool.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==User Interfaces==&lt;br /&gt;
* The integration configuration interfaces will be modeled on the existing interfaces for integrating Moodle and Mahara. See this document for a characterization of the type of admin user experience we want: [http://eduforge.org/docman/view.php/176/3200/Mahoodle.pdf Mahoodle.pdf]&lt;br /&gt;
* Moodle UIs&lt;br /&gt;
** Auth plugin config&lt;br /&gt;
** Enrolment plugin config&lt;br /&gt;
** Grade export config&lt;br /&gt;
* SchoolTool UIs&lt;br /&gt;
** similar division of config screens&lt;br /&gt;
** equivalent of Moodle&#039;s &amp;quot;Network Servers&amp;quot; block with links to SSO peers&lt;br /&gt;
** equivalent of &amp;quot;You have logged in from &amp;lt;somelink&amp;gt;&amp;quot; to go back after SSO&lt;br /&gt;
&lt;br /&gt;
==Mnet==&lt;br /&gt;
* What, in summary, does MNET provide?&lt;br /&gt;
** MNET is an XMLRPC implementation that dispatches messages to applications on either side (with a convention for function naming).&lt;br /&gt;
** MNET has a security layer that enforces that every message is encrypted and signed (with regular key rotation).&lt;br /&gt;
** MNET provides a core set of modules to provide common functionality such as SSO, key discovery, ping, and course enrollment.&lt;br /&gt;
&lt;br /&gt;
===Moodle mnet Interfaces===&lt;br /&gt;
* existing: SSO IDP interfaces&lt;br /&gt;
** in integration v1.0, SchoolTool will only be a Service Provider and Moodle will always be the IDentity Provider&lt;br /&gt;
** returns user data sufficient to create account&lt;br /&gt;
* list_user_enrolments(user)&lt;br /&gt;
** returns a list of all enrolments for a given user&lt;br /&gt;
** SchoolTool may call this to get enrolment data ASAP when an unknown user authenticates and an account is created using user_authorise()&lt;br /&gt;
&lt;br /&gt;
===SchoolTool mnet Interfaces===&lt;br /&gt;
* fetch_user(userdata)&lt;br /&gt;
** tell SchoolTool to ask Moodle for one user&#039;s data&lt;br /&gt;
** userdata: associative array such as:&lt;br /&gt;
*** username=&amp;gt;moquist&lt;br /&gt;
*** firstname=&amp;gt;Matt&lt;br /&gt;
*** lastname=&amp;gt;Oquist&lt;br /&gt;
*** idnumber=&amp;gt;1234457 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** email=&amp;gt;moquist@majen.net&lt;br /&gt;
*** password_hash=&amp;gt;234lih23rlh2asldfjas&lt;br /&gt;
*** password_hash_algorithm=&amp;gt;md5&lt;br /&gt;
*** ircnick=&amp;gt;moquist&lt;br /&gt;
*** arbitrary_field=&amp;gt;arbitrary_data_string...&lt;br /&gt;
**** SchoolTool only cares about enough to create a login account.&lt;br /&gt;
**** SchoolTool does not care about student-editable profile fields.&lt;br /&gt;
* new_section(sectiondata)&lt;br /&gt;
** sectiondata: associative array such as:&lt;br /&gt;
*** name=&amp;gt;&amp;quot;Algebra 1 V1 Mrs. Smith: Cats and their Affectations&amp;quot;&lt;br /&gt;
*** idnumber=&amp;gt;197423 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** teacheridnumber=&amp;gt;987234 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** segment=&amp;gt;1 # a section may have more than one semester/segment/term(?)&lt;br /&gt;
* new_enrolment(enrolmentdata)&lt;br /&gt;
** create new association between user &amp;amp; section&lt;br /&gt;
** enrolmentdata: associative array such as:&lt;br /&gt;
*** sectionid=&amp;gt;197423 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** userid=&amp;gt;987234 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** role=&amp;gt;&#039;teacher&#039; # only &#039;student&#039; and &#039;teacher&#039; supported in integration v1.0&lt;br /&gt;
* new_assessment(assessmentdata)&lt;br /&gt;
** create new assessment to be displayed in grade reports&lt;br /&gt;
** assessmentdata: associative array such as:&lt;br /&gt;
*** sectionid=&amp;gt;197423 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** name=&amp;gt;&amp;quot;How to grill a logarithmic sandwich&amp;quot;&lt;br /&gt;
*** idnumber=&amp;gt;73743734 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** chapternum=&amp;gt;3&lt;br /&gt;
*** honors_required=&amp;gt;false&lt;br /&gt;
*** nonhonors_required=&amp;gt;true&lt;br /&gt;
*** extra_credit=&amp;gt;false&lt;br /&gt;
*** pointval=&amp;gt;68&lt;br /&gt;
* new_grade(gradedata)&lt;br /&gt;
** make entry in gradebook&lt;br /&gt;
** gradedata: associative array such as:&lt;br /&gt;
*** assessmentid=&amp;gt;73743734&lt;br /&gt;
*** userid=&amp;gt;2347234 # unique shared ID of student&lt;br /&gt;
*** points_earned=&amp;gt;62&lt;br /&gt;
*** excepted=&amp;gt;false&lt;br /&gt;
*** attempt_num=&amp;gt;1 # if multiple attempts are allowed&lt;br /&gt;
&lt;br /&gt;
==Phase 2==&lt;br /&gt;
* Some discussion is taking place [http://moodle.org/mod/forum/discuss.php?d=129267 here].&lt;br /&gt;
===Scenarios===&lt;br /&gt;
# Susie Sunglasses will return to Town High School for her senior year. During the last week of school in her junior year, she sits down in the computer lab, logs into Moodle, and enrolls herself in each of the 5 courses she wishes to take during the fall semester. Moodle sends information about these enrollments to SchoolTool, and when THS principal Patricia Participle logs in to SchoolTool in July she is able to see which courses Susie will be taking in the fall.&lt;br /&gt;
 [https://docs.moodle.org/en/images_en/d/d1/Susie-and-patricia.dia Susie-and-patricia.dia source file]&lt;br /&gt;
 [[Image:Susie-and-patricia.png|300px]]&lt;br /&gt;
# Tommy Trackstar is a new student at Town High School. He consults immediately with guidance counselor Guinevere, who logs into Moodle and enrolls him in all his chosen courses. As Tommy completes his work and grades are given (some automatically and some manually by the teacher) in Moodle, each grade is also transferred to SchoolTool, which is thereby able to generate an up-to-date progress report for Tommy at any desired point in time (past or present).&lt;br /&gt;
 [https://docs.moodle.org/en/images_en/a/af/Tommy-and-guinevere1.dia Tommy-and-guinevere1.dia source file]&lt;br /&gt;
 [[Image:Tommy-and-guinevere1.png|500px]]&lt;br /&gt;
# Track season comes around, and Tommy gets too busy with practice. After careful consideration of all his available options, Tommy decides to drop Mathematics of Whistling to have an extra hour to run each day. Either he or guidance counselor Guinevere unenrolls him in Moodle from Mathematics of Whistling. The unenrollment is transferred directly to SchoolTool, and Guinevere is able to enter a note and a withdrawal code to explain what happened. This withdrawal is then included on Tommy&#039;s transcript.&lt;br /&gt;
 [https://docs.moodle.org/en/images_en/2/2b/Tommy-and-guinevere2.dia Tommy-and-guinevere2.dia source file]&lt;br /&gt;
 [[Image:Tommy-and-guinevere2.png|500px]]&lt;br /&gt;
# Samantha Stupenda, widely rumored to be the most demanding science teacher at THS, has developed assignments for the newest chapter of the textbook she&#039;s writing (&amp;quot;Earth Science Internalized: No Escape&amp;quot;). Samantha adds each of these assignments to her course in Moodle. As she adds each assignment, it is transferred to SchoolTool as a grade item for the section, and SchoolTool will be prepared to accept grade data for each student enrolled in Samantha&#039;s course.&lt;br /&gt;
# Vera Vestibule is taking Bubble Blowing 101, which has no Moodle component at all. Guidance counselor Guinevere logs into SchoolTool and 1) creates a course (&amp;quot;Bubble Blowing 101&amp;quot;), 2) creates a section of the course (&amp;quot;Bubble Blowing 101 taught by Chewie Chomper&amp;quot;), and 3) enrolls Vera in the section. Chewie uploads in SchoolTool a spreadsheet specifying the gradeable assignments in the course. As his students complete the assignments, Chewie enters their grades in SchoolTool, which is then able to include this course and these grades in student progress reports and transcripts.&lt;br /&gt;
# Country Mouse High School has been using Moodle for the past 3 years, and many but not all of the teachers have enthusiastically created Moodle courses that they use extensively in their classrooms. However, some teachers do not have a Moodle presence at all. The principal of CMHS, Betsy Balustrade, keeps a collection of spreadsheets and other documents which she uses to plan and manage the class schedule each year. The technology director of CMHS, Cathy Colever, decides to adopt SchoolTool as the Student Information System (SIS) of CMHS. She installs SchoolTool and integrates it with their existing Moodle, and all the information in Moodle about the teachers, students, courses, enrollments, and grades is transferred to SchoolTool. Cathy provides a series of training sessions for Betsy and her administrative assistant Astra Lodge. Since not every course in the school is in Moodle, Astra enters information about some courses, teachers, and student enrollments into SchoolTool manually. After that, Betsy is able to use SchoolTool to create the schedule for each upcoming semester.&lt;br /&gt;
# Samantha Stupenda also teaches Chemistry. All her class assignments are graded in Moodle, and those grades transfer automatically to SchoolTool. But her lab assignments are not in Moodle, and Samantha creates grade items and enters those grades manually into her Chemistry sections in SchoolTool. Halfway through the school year, Samantha decides to represent those lab assignments in Moodle, and she is careful to use *exactly* the same names that she entered into SchoolTool previously. What happens?&lt;br /&gt;
&lt;br /&gt;
===Flowcharts Because We Like Them===&lt;br /&gt;
* address each of the above scenarios...&lt;br /&gt;
* show technical detail for transfer of user account(s) from Moodle to SchoolTool&lt;br /&gt;
[[Image:SchoolTool_Integration_Userdata.png|200px]]&lt;br /&gt;
* show technical detail for transfer of enrollment(s) from Moodle to SchoolTool&lt;br /&gt;
* show technical detail for transfer of grades(s) from Moodle to SchoolTool&lt;br /&gt;
&lt;br /&gt;
===Part 1: SSO===&lt;br /&gt;
====Tasks====&lt;br /&gt;
* Make Moodle aware of SchoolTool as a potential SSO peer&lt;br /&gt;
* Implement Moodle cron job to ensure all users are always maintained in SchoolTool&lt;br /&gt;
** UI: gracefully add this to existing Mnet SSO config screen if possible&lt;br /&gt;
* Implement SchoolTool SSO interfaces&lt;br /&gt;
** new_user() Mnet interface&lt;br /&gt;
** update_user() Mnet interface&lt;br /&gt;
** UI: link to configured Moodle peers&lt;br /&gt;
** UI: link back to Moodle after Moodle-&amp;gt;SchoolTool SSO login&lt;br /&gt;
** UI: Mnet SSO configuration&lt;br /&gt;
===Part 2: Enrollments===&lt;br /&gt;
====Tasks====&lt;br /&gt;
===Part 3: Grades===&lt;br /&gt;
====Tasks====&lt;br /&gt;
&lt;br /&gt;
==Misc. TODO==&lt;br /&gt;
* Matt/Tom: Find out what reports ECHS will want from SchoolTool&lt;br /&gt;
&lt;br /&gt;
* SchoolTool TODO list&lt;br /&gt;
** Create an &amp;quot;ongoing section&amp;quot; container that will contain (otherwise normal) sections that do not fit into the year/term schema.&lt;br /&gt;
*** integration v1.0 will place all Moodle-driven sections in the &amp;quot;ongoing&amp;quot; container&lt;br /&gt;
** Add enumerated status field to enrollment (e.g., Active, Withdrawn No Grade, Withdrawn Failing, Passed) This will not initially include a workflow, but simply a current state and a history of states.&lt;br /&gt;
** Add support for section history&lt;br /&gt;
*** grading history&lt;br /&gt;
*** enrollment history (including all enrollment status changes)&lt;br /&gt;
*** teacher history&lt;/div&gt;</summary>
		<author><name>Moquist</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/32/en/index.php?title=Development:SchoolTool_Integration&amp;diff=61625</id>
		<title>Development:SchoolTool Integration</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/32/en/index.php?title=Development:SchoolTool_Integration&amp;diff=61625"/>
		<updated>2009-08-15T21:30:49Z</updated>

		<summary type="html">&lt;p&gt;Moquist: /* Scenarios */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [http://schooltool.org SchoolTool] SIS project recently released version 1.0, and lots of people could benefit from a solid integration between Moodle and SchoolTool. This page is a work-in-progress specification for the first version of this integration.&lt;br /&gt;
&lt;br /&gt;
==Goal: Moodle-SchoolTool integration modeled on Moodle-Mahara integration.==&lt;br /&gt;
* SchoolTool-Mahara integration should require very little extra effort when this project is complete.&lt;br /&gt;
* SchoolTool+Moodle+Mahara will provide a complete, integrated school administration/learning/portfolio suite that will be easily installable and supportable by time-crunched education systems administrators.&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
* Completely web-based integration configuration (similar to Moodle-Mahara configuration)&lt;br /&gt;
* SSO between SchoolTool and Moodle&lt;br /&gt;
* User accounts, courses, enrolments, assignments, and grades auto-update in SchoolTool&lt;br /&gt;
* Automatic grade transfer from Moodle to SchoolTool&lt;br /&gt;
&lt;br /&gt;
==Integration v1.0 NON-Requirements==&lt;br /&gt;
* Users, courses, enrolments can originate in and be managed within SchoolTool, with Moodle updating from SchoolTool.&lt;br /&gt;
** This will be the goal of the next version of the integration.&lt;br /&gt;
&lt;br /&gt;
==Assumptions==&lt;br /&gt;
* SchoolTool is the authoritative reporting application.&lt;br /&gt;
* Moodle drives all data creation and management.&lt;br /&gt;
&lt;br /&gt;
==Supported versions==&lt;br /&gt;
* SchoolTool 1.0&lt;br /&gt;
* Moodle 1.9.5+&lt;br /&gt;
&lt;br /&gt;
==Terminology Disambiguation==&lt;br /&gt;
* course: A SchoolTool course.&lt;br /&gt;
** SchoolTool &amp;quot;course&amp;quot; has no Moodle analogue. (&amp;quot;Algebra 1&amp;quot;) can have multiple &amp;quot;sections&amp;quot; (&amp;quot;Algebra * 1 @ 9:15 taught by Mr. Smith&amp;quot;).&lt;br /&gt;
* section: A SchoolTool section, a Moodle course.&lt;br /&gt;
&lt;br /&gt;
==Background info and references==&lt;br /&gt;
* [https://docs.moodle.org/en/Grades Moodle 1.9+ gradebook]&lt;br /&gt;
* [https://docs.moodle.org/en/External_database Moodle external DB enrolment plugin ]&lt;br /&gt;
&lt;br /&gt;
==Implementation notes/ideas==&lt;br /&gt;
* The [http://git.catalyst.net.nz/mnet.git/ PHP mnet library] has been [https://code.edge.launchpad.net/~mnet-maintainers/mnet-wsgi/main ported to python.]&lt;br /&gt;
** SchoolTool will need to use this library.&lt;br /&gt;
* Moodle will need some awareness of SchoolTool in the mnet auth plugin. Not sure yet what this entails. (i.e., Mahara shows up in the list. We need SchoolTool in there, too.)&lt;br /&gt;
* Moodle will need an enrolment plugin that gets data from mnet but is otherwise modeled on the external DB enrolment plugin.&lt;br /&gt;
* Moodle will need a gradebook plugin that can pass grades to SchoolTool via mnet.&lt;br /&gt;
* integration v1.0 will not batch updates from Moodle to SchoolTool. Updates will be small and frequent.&lt;br /&gt;
&lt;br /&gt;
==Use Cases==&lt;br /&gt;
* integration v1.0: Drop SchoolTool into existing Moodle site, leave Moodle as driver of user directory and enrollment management.&lt;br /&gt;
** Accounts manually created in SchoolTool may or may not be integratable with Moodle. (Matt recommends this as a feature, but it should not be required for v1.0.)&lt;br /&gt;
** All course creation and enrollment updates must happen first in Moodle and be transferred from there to SchoolTool.&lt;br /&gt;
** Enrollment can be student-driven.&lt;br /&gt;
** An interactive enrollment in Moodle kicks off an immediate transaction to record the enrollment in schooltool.&lt;br /&gt;
* future integration version only: Drop SchoolTool into existing Moodle site, after bulk data transfer from Moodle-&amp;gt;SchoolTool, flip configuration and use SchoolTool as the authoritative user directory and/or enrollment management system.&lt;br /&gt;
** Could this be used to migrate to SchoolTool from another SIS (integrated somehow with Moodle) by way of Moodle?&lt;br /&gt;
* Start fresh with both.&lt;br /&gt;
* future integration version only: Drop Moodle into SchoolTool site.&lt;br /&gt;
** maybe not important for v1.0, might basically come for free&lt;br /&gt;
* future integration version only: Drop SchoolTool into Mahara site (and vice-versa)&lt;br /&gt;
&#039;&#039;&#039;In summary, integration v1.0 will be a Moodle-&amp;gt;SchoolTool integration. We are laying a foundation for a future bidirectional integration in which sections are created and teachers and enrollments are managed in SchoolTool, while Moodle regularly reports grades back to SchoolTool.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==User Interfaces==&lt;br /&gt;
* The integration configuration interfaces will be modeled on the existing interfaces for integrating Moodle and Mahara. See this document for a characterization of the type of admin user experience we want: [http://eduforge.org/docman/view.php/176/3200/Mahoodle.pdf Mahoodle.pdf]&lt;br /&gt;
* Moodle UIs&lt;br /&gt;
** Auth plugin config&lt;br /&gt;
** Enrolment plugin config&lt;br /&gt;
** Grade export config&lt;br /&gt;
* SchoolTool UIs&lt;br /&gt;
** similar division of config screens&lt;br /&gt;
** equivalent of Moodle&#039;s &amp;quot;Network Servers&amp;quot; block with links to SSO peers&lt;br /&gt;
** equivalent of &amp;quot;You have logged in from &amp;lt;somelink&amp;gt;&amp;quot; to go back after SSO&lt;br /&gt;
&lt;br /&gt;
==Mnet==&lt;br /&gt;
* What, in summary, does MNET provide?&lt;br /&gt;
** MNET is an XMLRPC implementation that dispatches messages to applications on either side (with a convention for function naming).&lt;br /&gt;
** MNET has a security layer that enforces that every message is encrypted and signed (with regular key rotation).&lt;br /&gt;
** MNET provides a core set of modules to provide common functionality such as SSO, key discovery, ping, and course enrollment.&lt;br /&gt;
&lt;br /&gt;
===Moodle mnet Interfaces===&lt;br /&gt;
* existing: SSO IDP interfaces&lt;br /&gt;
** in integration v1.0, SchoolTool will only be a Service Provider and Moodle will always be the IDentity Provider&lt;br /&gt;
** returns user data sufficient to create account&lt;br /&gt;
* list_user_enrolments(user)&lt;br /&gt;
** returns a list of all enrolments for a given user&lt;br /&gt;
** SchoolTool may call this to get enrolment data ASAP when an unknown user authenticates and an account is created using user_authorise()&lt;br /&gt;
&lt;br /&gt;
===SchoolTool mnet Interfaces===&lt;br /&gt;
* fetch_user(userdata)&lt;br /&gt;
** tell SchoolTool to ask Moodle for one user&#039;s data&lt;br /&gt;
** userdata: associative array such as:&lt;br /&gt;
*** username=&amp;gt;moquist&lt;br /&gt;
*** firstname=&amp;gt;Matt&lt;br /&gt;
*** lastname=&amp;gt;Oquist&lt;br /&gt;
*** idnumber=&amp;gt;1234457 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** email=&amp;gt;moquist@majen.net&lt;br /&gt;
*** password_hash=&amp;gt;234lih23rlh2asldfjas&lt;br /&gt;
*** password_hash_algorithm=&amp;gt;md5&lt;br /&gt;
*** ircnick=&amp;gt;moquist&lt;br /&gt;
*** arbitrary_field=&amp;gt;arbitrary_data_string...&lt;br /&gt;
**** SchoolTool only cares about enough to create a login account.&lt;br /&gt;
**** SchoolTool does not care about student-editable profile fields.&lt;br /&gt;
* new_section(sectiondata)&lt;br /&gt;
** sectiondata: associative array such as:&lt;br /&gt;
*** name=&amp;gt;&amp;quot;Algebra 1 V1 Mrs. Smith: Cats and their Affectations&amp;quot;&lt;br /&gt;
*** idnumber=&amp;gt;197423 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** teacheridnumber=&amp;gt;987234 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** segment=&amp;gt;1 # a section may have more than one semester/segment/term(?)&lt;br /&gt;
* new_enrolment(enrolmentdata)&lt;br /&gt;
** create new association between user &amp;amp; section&lt;br /&gt;
** enrolmentdata: associative array such as:&lt;br /&gt;
*** sectionid=&amp;gt;197423 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** userid=&amp;gt;987234 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** role=&amp;gt;&#039;teacher&#039; # only &#039;student&#039; and &#039;teacher&#039; supported in integration v1.0&lt;br /&gt;
* new_assessment(assessmentdata)&lt;br /&gt;
** create new assessment to be displayed in grade reports&lt;br /&gt;
** assessmentdata: associative array such as:&lt;br /&gt;
*** sectionid=&amp;gt;197423 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** name=&amp;gt;&amp;quot;How to grill a logarithmic sandwich&amp;quot;&lt;br /&gt;
*** idnumber=&amp;gt;73743734 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** chapternum=&amp;gt;3&lt;br /&gt;
*** honors_required=&amp;gt;false&lt;br /&gt;
*** nonhonors_required=&amp;gt;true&lt;br /&gt;
*** extra_credit=&amp;gt;false&lt;br /&gt;
*** pointval=&amp;gt;68&lt;br /&gt;
* new_grade(gradedata)&lt;br /&gt;
** make entry in gradebook&lt;br /&gt;
** gradedata: associative array such as:&lt;br /&gt;
*** assessmentid=&amp;gt;73743734&lt;br /&gt;
*** userid=&amp;gt;2347234 # unique shared ID of student&lt;br /&gt;
*** points_earned=&amp;gt;62&lt;br /&gt;
*** excepted=&amp;gt;false&lt;br /&gt;
*** attempt_num=&amp;gt;1 # if multiple attempts are allowed&lt;br /&gt;
&lt;br /&gt;
==Phase 2==&lt;br /&gt;
* Some discussion is taking place [http://moodle.org/mod/forum/discuss.php?d=129267 here].&lt;br /&gt;
===Scenarios===&lt;br /&gt;
* Susie Sunglasses will return to Town High School for her senior year. During the last week of school in her junior year, she sits down in the computer lab, logs into Moodle, and enrolls herself in each of the 5 courses she wishes to take during the fall semester. Moodle sends information about these enrollments to SchoolTool, and when THS principal Patricia Participle logs in to SchoolTool in July she is able to see which courses Susie will be taking in the fall.&lt;br /&gt;
 [https://docs.moodle.org/en/images_en/d/d1/Susie-and-patricia.dia Susie-and-patricia.dia source file]&lt;br /&gt;
 [[Image:Susie-and-patricia.png|300px]]&lt;br /&gt;
* Tommy Trackstar is a new student at Town High School. He consults immediately with guidance counselor Guinevere, who logs into Moodle and enrolls him in all his chosen courses. As Tommy completes his work and grades are given (some automatically and some manually by the teacher) in Moodle, each grade is also transferred to SchoolTool, which is thereby able to generate an up-to-date progress report for Tommy at any desired point in time (past or present).&lt;br /&gt;
 [https://docs.moodle.org/en/images_en/a/af/Tommy-and-guinevere1.dia Tommy-and-guinevere1.dia source file]&lt;br /&gt;
 [[Image:Tommy-and-guinevere1.png|500px]]&lt;br /&gt;
* Track season comes around, and Tommy gets too busy with practice. After careful consideration of all his available options, Tommy decides to drop Mathematics of Whistling to have an extra hour to run each day. Either he or guidance counselor Guinevere unenrolls him in Moodle from Mathematics of Whistling. The unenrollment is transferred directly to SchoolTool, and Guinevere is able to enter a note and a withdrawal code to explain what happened. This withdrawal is then included on Tommy&#039;s transcript.&lt;br /&gt;
 [https://docs.moodle.org/en/images_en/2/2b/Tommy-and-guinevere2.dia Tommy-and-guinevere2.dia source file]&lt;br /&gt;
 [[Image:Tommy-and-guinevere2.png|500px]]&lt;br /&gt;
* Samantha Stupenda, widely rumored to be the most demanding science teacher at THS, has developed assignments for the newest chapter of the textbook she&#039;s writing (&amp;quot;Earth Science Internalized: No Escape&amp;quot;). Samantha adds each of these assignments to her course in Moodle. As she adds each assignment, it is transferred to SchoolTool as a grade item for the section, and SchoolTool will be prepared to accept grade data for each student enrolled in Samantha&#039;s course.&lt;br /&gt;
* Vera Vestibule is taking Bubble Blowing 101, which has no Moodle component at all. Guidance counselor Guinevere logs into SchoolTool and 1) creates a course (&amp;quot;Bubble Blowing 101&amp;quot;), 2) creates a section of the course (&amp;quot;Bubble Blowing 101 taught by Chewie Chomper&amp;quot;), and 3) enrolls Vera in the section. Chewie uploads in SchoolTool a spreadsheet specifying the gradeable assignments in the course. As his students complete the assignments, Chewie enters their grades in SchoolTool, which is then able to include this course and these grades in student progress reports and transcripts.&lt;br /&gt;
* Country Mouse High School has been using Moodle for the past 3 years, and many but not all of the teachers have enthusiastically created Moodle courses that they use extensively in their classrooms. However, some teachers do not have a Moodle presence at all. The principal of CMHS, Betsy Balustrade, keeps a collection of spreadsheets and other documents which she uses to plan and manage the class schedule each year. The technology director of CMHS, Cathy Colever, decides to adopt SchoolTool as the Student Information System (SIS) of CMHS. She installs SchoolTool and integrates it with their existing Moodle, and all the information in Moodle about the teachers, students, courses, enrollments, and grades is transferred to SchoolTool. Cathy provides a series of training sessions for Betsy and her administrative assistant Astra Lodge. Since not every course in the school is in Moodle, Astra enters information about some courses, teachers, and student enrollments into SchoolTool manually. After that, Betsy is able to use SchoolTool to create the schedule for each upcoming semester.&lt;br /&gt;
* Samantha Stupenda also teaches Chemistry. All her class assignments are graded in Moodle, and those grades transfer automatically to SchoolTool. But her lab assignments are not in Moodle, and Samantha creates grade items and enters those grades manually into her Chemistry sections in SchoolTool. Halfway through the school year, Samantha decides to represent those lab assignments in Moodle, and she is careful to use *exactly* the same names that she entered into SchoolTool previously. What happens?&lt;br /&gt;
&lt;br /&gt;
===Flowcharts Because We Like Them===&lt;br /&gt;
* address each of the above scenarios...&lt;br /&gt;
* show technical detail for transfer of user account(s) from Moodle to SchoolTool&lt;br /&gt;
[[Image:SchoolTool_Integration_Userdata.png|200px]]&lt;br /&gt;
* show technical detail for transfer of enrollment(s) from Moodle to SchoolTool&lt;br /&gt;
* show technical detail for transfer of grades(s) from Moodle to SchoolTool&lt;br /&gt;
&lt;br /&gt;
===Part 1: SSO===&lt;br /&gt;
====Tasks====&lt;br /&gt;
* Make Moodle aware of SchoolTool as a potential SSO peer&lt;br /&gt;
* Implement Moodle cron job to ensure all users are always maintained in SchoolTool&lt;br /&gt;
** UI: gracefully add this to existing Mnet SSO config screen if possible&lt;br /&gt;
* Implement SchoolTool SSO interfaces&lt;br /&gt;
** new_user() Mnet interface&lt;br /&gt;
** update_user() Mnet interface&lt;br /&gt;
** UI: link to configured Moodle peers&lt;br /&gt;
** UI: link back to Moodle after Moodle-&amp;gt;SchoolTool SSO login&lt;br /&gt;
** UI: Mnet SSO configuration&lt;br /&gt;
===Part 2: Enrollments===&lt;br /&gt;
====Tasks====&lt;br /&gt;
===Part 3: Grades===&lt;br /&gt;
====Tasks====&lt;br /&gt;
&lt;br /&gt;
==Misc. TODO==&lt;br /&gt;
* Matt/Tom: Find out what reports ECHS will want from SchoolTool&lt;br /&gt;
&lt;br /&gt;
* SchoolTool TODO list&lt;br /&gt;
** Create an &amp;quot;ongoing section&amp;quot; container that will contain (otherwise normal) sections that do not fit into the year/term schema.&lt;br /&gt;
*** integration v1.0 will place all Moodle-driven sections in the &amp;quot;ongoing&amp;quot; container&lt;br /&gt;
** Add enumerated status field to enrollment (e.g., Active, Withdrawn No Grade, Withdrawn Failing, Passed) This will not initially include a workflow, but simply a current state and a history of states.&lt;br /&gt;
** Add support for section history&lt;br /&gt;
*** grading history&lt;br /&gt;
*** enrollment history (including all enrollment status changes)&lt;br /&gt;
*** teacher history&lt;/div&gt;</summary>
		<author><name>Moquist</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/32/en/index.php?title=Development:SchoolTool_Integration&amp;diff=61624</id>
		<title>Development:SchoolTool Integration</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/32/en/index.php?title=Development:SchoolTool_Integration&amp;diff=61624"/>
		<updated>2009-08-15T21:22:18Z</updated>

		<summary type="html">&lt;p&gt;Moquist: /* Scenarios */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [http://schooltool.org SchoolTool] SIS project recently released version 1.0, and lots of people could benefit from a solid integration between Moodle and SchoolTool. This page is a work-in-progress specification for the first version of this integration.&lt;br /&gt;
&lt;br /&gt;
==Goal: Moodle-SchoolTool integration modeled on Moodle-Mahara integration.==&lt;br /&gt;
* SchoolTool-Mahara integration should require very little extra effort when this project is complete.&lt;br /&gt;
* SchoolTool+Moodle+Mahara will provide a complete, integrated school administration/learning/portfolio suite that will be easily installable and supportable by time-crunched education systems administrators.&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
* Completely web-based integration configuration (similar to Moodle-Mahara configuration)&lt;br /&gt;
* SSO between SchoolTool and Moodle&lt;br /&gt;
* User accounts, courses, enrolments, assignments, and grades auto-update in SchoolTool&lt;br /&gt;
* Automatic grade transfer from Moodle to SchoolTool&lt;br /&gt;
&lt;br /&gt;
==Integration v1.0 NON-Requirements==&lt;br /&gt;
* Users, courses, enrolments can originate in and be managed within SchoolTool, with Moodle updating from SchoolTool.&lt;br /&gt;
** This will be the goal of the next version of the integration.&lt;br /&gt;
&lt;br /&gt;
==Assumptions==&lt;br /&gt;
* SchoolTool is the authoritative reporting application.&lt;br /&gt;
* Moodle drives all data creation and management.&lt;br /&gt;
&lt;br /&gt;
==Supported versions==&lt;br /&gt;
* SchoolTool 1.0&lt;br /&gt;
* Moodle 1.9.5+&lt;br /&gt;
&lt;br /&gt;
==Terminology Disambiguation==&lt;br /&gt;
* course: A SchoolTool course.&lt;br /&gt;
** SchoolTool &amp;quot;course&amp;quot; has no Moodle analogue. (&amp;quot;Algebra 1&amp;quot;) can have multiple &amp;quot;sections&amp;quot; (&amp;quot;Algebra * 1 @ 9:15 taught by Mr. Smith&amp;quot;).&lt;br /&gt;
* section: A SchoolTool section, a Moodle course.&lt;br /&gt;
&lt;br /&gt;
==Background info and references==&lt;br /&gt;
* [https://docs.moodle.org/en/Grades Moodle 1.9+ gradebook]&lt;br /&gt;
* [https://docs.moodle.org/en/External_database Moodle external DB enrolment plugin ]&lt;br /&gt;
&lt;br /&gt;
==Implementation notes/ideas==&lt;br /&gt;
* The [http://git.catalyst.net.nz/mnet.git/ PHP mnet library] has been [https://code.edge.launchpad.net/~mnet-maintainers/mnet-wsgi/main ported to python.]&lt;br /&gt;
** SchoolTool will need to use this library.&lt;br /&gt;
* Moodle will need some awareness of SchoolTool in the mnet auth plugin. Not sure yet what this entails. (i.e., Mahara shows up in the list. We need SchoolTool in there, too.)&lt;br /&gt;
* Moodle will need an enrolment plugin that gets data from mnet but is otherwise modeled on the external DB enrolment plugin.&lt;br /&gt;
* Moodle will need a gradebook plugin that can pass grades to SchoolTool via mnet.&lt;br /&gt;
* integration v1.0 will not batch updates from Moodle to SchoolTool. Updates will be small and frequent.&lt;br /&gt;
&lt;br /&gt;
==Use Cases==&lt;br /&gt;
* integration v1.0: Drop SchoolTool into existing Moodle site, leave Moodle as driver of user directory and enrollment management.&lt;br /&gt;
** Accounts manually created in SchoolTool may or may not be integratable with Moodle. (Matt recommends this as a feature, but it should not be required for v1.0.)&lt;br /&gt;
** All course creation and enrollment updates must happen first in Moodle and be transferred from there to SchoolTool.&lt;br /&gt;
** Enrollment can be student-driven.&lt;br /&gt;
** An interactive enrollment in Moodle kicks off an immediate transaction to record the enrollment in schooltool.&lt;br /&gt;
* future integration version only: Drop SchoolTool into existing Moodle site, after bulk data transfer from Moodle-&amp;gt;SchoolTool, flip configuration and use SchoolTool as the authoritative user directory and/or enrollment management system.&lt;br /&gt;
** Could this be used to migrate to SchoolTool from another SIS (integrated somehow with Moodle) by way of Moodle?&lt;br /&gt;
* Start fresh with both.&lt;br /&gt;
* future integration version only: Drop Moodle into SchoolTool site.&lt;br /&gt;
** maybe not important for v1.0, might basically come for free&lt;br /&gt;
* future integration version only: Drop SchoolTool into Mahara site (and vice-versa)&lt;br /&gt;
&#039;&#039;&#039;In summary, integration v1.0 will be a Moodle-&amp;gt;SchoolTool integration. We are laying a foundation for a future bidirectional integration in which sections are created and teachers and enrollments are managed in SchoolTool, while Moodle regularly reports grades back to SchoolTool.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==User Interfaces==&lt;br /&gt;
* The integration configuration interfaces will be modeled on the existing interfaces for integrating Moodle and Mahara. See this document for a characterization of the type of admin user experience we want: [http://eduforge.org/docman/view.php/176/3200/Mahoodle.pdf Mahoodle.pdf]&lt;br /&gt;
* Moodle UIs&lt;br /&gt;
** Auth plugin config&lt;br /&gt;
** Enrolment plugin config&lt;br /&gt;
** Grade export config&lt;br /&gt;
* SchoolTool UIs&lt;br /&gt;
** similar division of config screens&lt;br /&gt;
** equivalent of Moodle&#039;s &amp;quot;Network Servers&amp;quot; block with links to SSO peers&lt;br /&gt;
** equivalent of &amp;quot;You have logged in from &amp;lt;somelink&amp;gt;&amp;quot; to go back after SSO&lt;br /&gt;
&lt;br /&gt;
==Mnet==&lt;br /&gt;
* What, in summary, does MNET provide?&lt;br /&gt;
** MNET is an XMLRPC implementation that dispatches messages to applications on either side (with a convention for function naming).&lt;br /&gt;
** MNET has a security layer that enforces that every message is encrypted and signed (with regular key rotation).&lt;br /&gt;
** MNET provides a core set of modules to provide common functionality such as SSO, key discovery, ping, and course enrollment.&lt;br /&gt;
&lt;br /&gt;
===Moodle mnet Interfaces===&lt;br /&gt;
* existing: SSO IDP interfaces&lt;br /&gt;
** in integration v1.0, SchoolTool will only be a Service Provider and Moodle will always be the IDentity Provider&lt;br /&gt;
** returns user data sufficient to create account&lt;br /&gt;
* list_user_enrolments(user)&lt;br /&gt;
** returns a list of all enrolments for a given user&lt;br /&gt;
** SchoolTool may call this to get enrolment data ASAP when an unknown user authenticates and an account is created using user_authorise()&lt;br /&gt;
&lt;br /&gt;
===SchoolTool mnet Interfaces===&lt;br /&gt;
* fetch_user(userdata)&lt;br /&gt;
** tell SchoolTool to ask Moodle for one user&#039;s data&lt;br /&gt;
** userdata: associative array such as:&lt;br /&gt;
*** username=&amp;gt;moquist&lt;br /&gt;
*** firstname=&amp;gt;Matt&lt;br /&gt;
*** lastname=&amp;gt;Oquist&lt;br /&gt;
*** idnumber=&amp;gt;1234457 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** email=&amp;gt;moquist@majen.net&lt;br /&gt;
*** password_hash=&amp;gt;234lih23rlh2asldfjas&lt;br /&gt;
*** password_hash_algorithm=&amp;gt;md5&lt;br /&gt;
*** ircnick=&amp;gt;moquist&lt;br /&gt;
*** arbitrary_field=&amp;gt;arbitrary_data_string...&lt;br /&gt;
**** SchoolTool only cares about enough to create a login account.&lt;br /&gt;
**** SchoolTool does not care about student-editable profile fields.&lt;br /&gt;
* new_section(sectiondata)&lt;br /&gt;
** sectiondata: associative array such as:&lt;br /&gt;
*** name=&amp;gt;&amp;quot;Algebra 1 V1 Mrs. Smith: Cats and their Affectations&amp;quot;&lt;br /&gt;
*** idnumber=&amp;gt;197423 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** teacheridnumber=&amp;gt;987234 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** segment=&amp;gt;1 # a section may have more than one semester/segment/term(?)&lt;br /&gt;
* new_enrolment(enrolmentdata)&lt;br /&gt;
** create new association between user &amp;amp; section&lt;br /&gt;
** enrolmentdata: associative array such as:&lt;br /&gt;
*** sectionid=&amp;gt;197423 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** userid=&amp;gt;987234 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** role=&amp;gt;&#039;teacher&#039; # only &#039;student&#039; and &#039;teacher&#039; supported in integration v1.0&lt;br /&gt;
* new_assessment(assessmentdata)&lt;br /&gt;
** create new assessment to be displayed in grade reports&lt;br /&gt;
** assessmentdata: associative array such as:&lt;br /&gt;
*** sectionid=&amp;gt;197423 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** name=&amp;gt;&amp;quot;How to grill a logarithmic sandwich&amp;quot;&lt;br /&gt;
*** idnumber=&amp;gt;73743734 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** chapternum=&amp;gt;3&lt;br /&gt;
*** honors_required=&amp;gt;false&lt;br /&gt;
*** nonhonors_required=&amp;gt;true&lt;br /&gt;
*** extra_credit=&amp;gt;false&lt;br /&gt;
*** pointval=&amp;gt;68&lt;br /&gt;
* new_grade(gradedata)&lt;br /&gt;
** make entry in gradebook&lt;br /&gt;
** gradedata: associative array such as:&lt;br /&gt;
*** assessmentid=&amp;gt;73743734&lt;br /&gt;
*** userid=&amp;gt;2347234 # unique shared ID of student&lt;br /&gt;
*** points_earned=&amp;gt;62&lt;br /&gt;
*** excepted=&amp;gt;false&lt;br /&gt;
*** attempt_num=&amp;gt;1 # if multiple attempts are allowed&lt;br /&gt;
&lt;br /&gt;
==Phase 2==&lt;br /&gt;
* Some discussion is taking place [http://moodle.org/mod/forum/discuss.php?d=129267 here].&lt;br /&gt;
===Scenarios===&lt;br /&gt;
* Susie Sunglasses will return to Town High School for her senior year. During the last week of school in her junior year, she sits down in the computer lab and enrolls herself in each of the 5 courses she wishes to take during the fall semester. Moodle sends information about these enrollments to SchoolTool, and when THS principal Patricia Participle logs in to SchoolTool in July she is able to see which courses Susie will be taking in the fall.&lt;br /&gt;
 [https://docs.moodle.org/en/images_en/d/d1/Susie-and-patricia.dia Susie-and-patricia.dia source file]&lt;br /&gt;
 [[Image:Susie-and-patricia.png|300px]]&lt;br /&gt;
* Tommy Trackstar is a new student at Town High School. He consults immediately with guidance counselor Guinevere, who logs into Moodle and enrolls him in all his chosen courses. As Tommy completes his work and grades are given (some automatically and some manually by the teacher) in Moodle, each grade is also transferred to SchoolTool, which is thereby able to generate an up-to-date progress report for Tommy at any desired point in time (past or present).&lt;br /&gt;
 [https://docs.moodle.org/en/images_en/a/af/Tommy-and-guinevere1.dia Tommy-and-guinevere1.dia source file]&lt;br /&gt;
 [[Image:Tommy-and-guinevere1.png|500px]]&lt;br /&gt;
* Track season comes around, and Tommy gets too busy with practice. After careful consideration of all his available options, Tommy decides to drop Mathematics of Whistling to have an extra hour to run each day. Either he or guidance counselor Guinevere unenrolls him in Moodle from Mathematics of Whistling. The unenrollment is transferred directly to SchoolTool, and Guinevere is able to enter a note and a withdrawal code to explain what happened. This withdrawal is then included on Tommy&#039;s transcript.&lt;br /&gt;
 [https://docs.moodle.org/en/images_en/2/2b/Tommy-and-guinevere2.dia Tommy-and-guinevere2.dia source file]&lt;br /&gt;
 [[Image:Tommy-and-guinevere2.png|500px]]&lt;br /&gt;
* Samantha Stupenda, widely rumored to be the most demanding science teacher at THS, has developed assignments for the newest chapter of the textbook she&#039;s writing (&amp;quot;Earth Science Internalized: No Escape&amp;quot;). Samantha adds each of these assignments to her course in Moodle. As she adds each assignment, it is transferred to SchoolTool as a grade item for the section, and SchoolTool will be prepared to accept grade data for each student enrolled in Samantha&#039;s course.&lt;br /&gt;
* Vera Vestibule is taking Bubble Blowing 101, which has no Moodle component at all. Guidance counselor Guinevere logs into SchoolTool and 1) creates a course (&amp;quot;Bubble Blowing 101&amp;quot;), 2) creates a section of the course (&amp;quot;Bubble Blowing 101 taught by Chewie Chomper&amp;quot;), and 3) enrolls Vera in the section. Chewie uploads in SchoolTool a spreadsheet specifying the gradeable assignments in the course. As his students complete the assignments, Chewie enters their grades in SchoolTool, which is then able to include this course and these grades in student progress reports and transcripts.&lt;br /&gt;
* Country Mouse High School has been using Moodle for the past 3 years, and many but not all of the teachers have enthusiastically created Moodle courses that they use extensively in their classrooms. However, some teachers do not have a Moodle presence at all. The principal of CMHS, Betsy Balustrade, keeps a collection of spreadsheets and other documents which she uses to plan and manage the class schedule each year. The technology director of CMHS, Cathy Colever, decides to adopt SchoolTool as the Student Information System (SIS) of CMHS. She installs SchoolTool and integrates it with their existing Moodle, and all the information in Moodle about the teachers, students, courses, enrollments, and grades is transferred to SchoolTool. Cathy provides a series of training sessions for Betsy and her administrative assistant Astra Lodge. Since not every course in the school is in Moodle, Astra enters information about some courses, teachers, and student enrollments into SchoolTool manually. After that, Betsy is able to use SchoolTool to create the schedule for each upcoming semester.&lt;br /&gt;
* Samantha Stupenda also teaches Chemistry. All her class assignments are graded in Moodle, and those grades transfer automatically to SchoolTool. But her lab assignments are not in Moodle, and Samantha creates grade items and enters those grades manually into her Chemistry sections in SchoolTool. Halfway through the school year, Samantha decides to represent those lab assignments in Moodle, and she is careful to use *exactly* the same names that she entered into SchoolTool previously. What happens?&lt;br /&gt;
&lt;br /&gt;
===Flowcharts Because We Like Them===&lt;br /&gt;
* address each of the above scenarios...&lt;br /&gt;
* show technical detail for transfer of user account(s) from Moodle to SchoolTool&lt;br /&gt;
[[Image:SchoolTool_Integration_Userdata.png|200px]]&lt;br /&gt;
* show technical detail for transfer of enrollment(s) from Moodle to SchoolTool&lt;br /&gt;
* show technical detail for transfer of grades(s) from Moodle to SchoolTool&lt;br /&gt;
&lt;br /&gt;
===Part 1: SSO===&lt;br /&gt;
====Tasks====&lt;br /&gt;
* Make Moodle aware of SchoolTool as a potential SSO peer&lt;br /&gt;
* Implement Moodle cron job to ensure all users are always maintained in SchoolTool&lt;br /&gt;
** UI: gracefully add this to existing Mnet SSO config screen if possible&lt;br /&gt;
* Implement SchoolTool SSO interfaces&lt;br /&gt;
** new_user() Mnet interface&lt;br /&gt;
** update_user() Mnet interface&lt;br /&gt;
** UI: link to configured Moodle peers&lt;br /&gt;
** UI: link back to Moodle after Moodle-&amp;gt;SchoolTool SSO login&lt;br /&gt;
** UI: Mnet SSO configuration&lt;br /&gt;
===Part 2: Enrollments===&lt;br /&gt;
====Tasks====&lt;br /&gt;
===Part 3: Grades===&lt;br /&gt;
====Tasks====&lt;br /&gt;
&lt;br /&gt;
==Misc. TODO==&lt;br /&gt;
* Matt/Tom: Find out what reports ECHS will want from SchoolTool&lt;br /&gt;
&lt;br /&gt;
* SchoolTool TODO list&lt;br /&gt;
** Create an &amp;quot;ongoing section&amp;quot; container that will contain (otherwise normal) sections that do not fit into the year/term schema.&lt;br /&gt;
*** integration v1.0 will place all Moodle-driven sections in the &amp;quot;ongoing&amp;quot; container&lt;br /&gt;
** Add enumerated status field to enrollment (e.g., Active, Withdrawn No Grade, Withdrawn Failing, Passed) This will not initially include a workflow, but simply a current state and a history of states.&lt;br /&gt;
** Add support for section history&lt;br /&gt;
*** grading history&lt;br /&gt;
*** enrollment history (including all enrollment status changes)&lt;br /&gt;
*** teacher history&lt;/div&gt;</summary>
		<author><name>Moquist</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/32/en/index.php?title=File:Tommy-and-guinevere2.png&amp;diff=61623</id>
		<title>File:Tommy-and-guinevere2.png</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/32/en/index.php?title=File:Tommy-and-guinevere2.png&amp;diff=61623"/>
		<updated>2009-08-15T21:21:43Z</updated>

		<summary type="html">&lt;p&gt;Moquist: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Moquist</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/32/en/index.php?title=File:Tommy-and-guinevere2.dia&amp;diff=61622</id>
		<title>File:Tommy-and-guinevere2.dia</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/32/en/index.php?title=File:Tommy-and-guinevere2.dia&amp;diff=61622"/>
		<updated>2009-08-15T21:21:01Z</updated>

		<summary type="html">&lt;p&gt;Moquist: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Moquist</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/32/en/index.php?title=File:Tommy-and-guinevere1.dia&amp;diff=61620</id>
		<title>File:Tommy-and-guinevere1.dia</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/32/en/index.php?title=File:Tommy-and-guinevere1.dia&amp;diff=61620"/>
		<updated>2009-08-15T17:16:49Z</updated>

		<summary type="html">&lt;p&gt;Moquist: uploaded a new version of &amp;quot;Image:Tommy-and-guinevere1.dia&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Moquist</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/32/en/index.php?title=Development:SchoolTool_Integration&amp;diff=61619</id>
		<title>Development:SchoolTool Integration</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/32/en/index.php?title=Development:SchoolTool_Integration&amp;diff=61619"/>
		<updated>2009-08-15T17:15:26Z</updated>

		<summary type="html">&lt;p&gt;Moquist: /* Scenarios */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [http://schooltool.org SchoolTool] SIS project recently released version 1.0, and lots of people could benefit from a solid integration between Moodle and SchoolTool. This page is a work-in-progress specification for the first version of this integration.&lt;br /&gt;
&lt;br /&gt;
==Goal: Moodle-SchoolTool integration modeled on Moodle-Mahara integration.==&lt;br /&gt;
* SchoolTool-Mahara integration should require very little extra effort when this project is complete.&lt;br /&gt;
* SchoolTool+Moodle+Mahara will provide a complete, integrated school administration/learning/portfolio suite that will be easily installable and supportable by time-crunched education systems administrators.&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
* Completely web-based integration configuration (similar to Moodle-Mahara configuration)&lt;br /&gt;
* SSO between SchoolTool and Moodle&lt;br /&gt;
* User accounts, courses, enrolments, assignments, and grades auto-update in SchoolTool&lt;br /&gt;
* Automatic grade transfer from Moodle to SchoolTool&lt;br /&gt;
&lt;br /&gt;
==Integration v1.0 NON-Requirements==&lt;br /&gt;
* Users, courses, enrolments can originate in and be managed within SchoolTool, with Moodle updating from SchoolTool.&lt;br /&gt;
** This will be the goal of the next version of the integration.&lt;br /&gt;
&lt;br /&gt;
==Assumptions==&lt;br /&gt;
* SchoolTool is the authoritative reporting application.&lt;br /&gt;
* Moodle drives all data creation and management.&lt;br /&gt;
&lt;br /&gt;
==Supported versions==&lt;br /&gt;
* SchoolTool 1.0&lt;br /&gt;
* Moodle 1.9.5+&lt;br /&gt;
&lt;br /&gt;
==Terminology Disambiguation==&lt;br /&gt;
* course: A SchoolTool course.&lt;br /&gt;
** SchoolTool &amp;quot;course&amp;quot; has no Moodle analogue. (&amp;quot;Algebra 1&amp;quot;) can have multiple &amp;quot;sections&amp;quot; (&amp;quot;Algebra * 1 @ 9:15 taught by Mr. Smith&amp;quot;).&lt;br /&gt;
* section: A SchoolTool section, a Moodle course.&lt;br /&gt;
&lt;br /&gt;
==Background info and references==&lt;br /&gt;
* [https://docs.moodle.org/en/Grades Moodle 1.9+ gradebook]&lt;br /&gt;
* [https://docs.moodle.org/en/External_database Moodle external DB enrolment plugin ]&lt;br /&gt;
&lt;br /&gt;
==Implementation notes/ideas==&lt;br /&gt;
* The [http://git.catalyst.net.nz/mnet.git/ PHP mnet library] has been [https://code.edge.launchpad.net/~mnet-maintainers/mnet-wsgi/main ported to python.]&lt;br /&gt;
** SchoolTool will need to use this library.&lt;br /&gt;
* Moodle will need some awareness of SchoolTool in the mnet auth plugin. Not sure yet what this entails. (i.e., Mahara shows up in the list. We need SchoolTool in there, too.)&lt;br /&gt;
* Moodle will need an enrolment plugin that gets data from mnet but is otherwise modeled on the external DB enrolment plugin.&lt;br /&gt;
* Moodle will need a gradebook plugin that can pass grades to SchoolTool via mnet.&lt;br /&gt;
* integration v1.0 will not batch updates from Moodle to SchoolTool. Updates will be small and frequent.&lt;br /&gt;
&lt;br /&gt;
==Use Cases==&lt;br /&gt;
* integration v1.0: Drop SchoolTool into existing Moodle site, leave Moodle as driver of user directory and enrollment management.&lt;br /&gt;
** Accounts manually created in SchoolTool may or may not be integratable with Moodle. (Matt recommends this as a feature, but it should not be required for v1.0.)&lt;br /&gt;
** All course creation and enrollment updates must happen first in Moodle and be transferred from there to SchoolTool.&lt;br /&gt;
** Enrollment can be student-driven.&lt;br /&gt;
** An interactive enrollment in Moodle kicks off an immediate transaction to record the enrollment in schooltool.&lt;br /&gt;
* future integration version only: Drop SchoolTool into existing Moodle site, after bulk data transfer from Moodle-&amp;gt;SchoolTool, flip configuration and use SchoolTool as the authoritative user directory and/or enrollment management system.&lt;br /&gt;
** Could this be used to migrate to SchoolTool from another SIS (integrated somehow with Moodle) by way of Moodle?&lt;br /&gt;
* Start fresh with both.&lt;br /&gt;
* future integration version only: Drop Moodle into SchoolTool site.&lt;br /&gt;
** maybe not important for v1.0, might basically come for free&lt;br /&gt;
* future integration version only: Drop SchoolTool into Mahara site (and vice-versa)&lt;br /&gt;
&#039;&#039;&#039;In summary, integration v1.0 will be a Moodle-&amp;gt;SchoolTool integration. We are laying a foundation for a future bidirectional integration in which sections are created and teachers and enrollments are managed in SchoolTool, while Moodle regularly reports grades back to SchoolTool.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==User Interfaces==&lt;br /&gt;
* The integration configuration interfaces will be modeled on the existing interfaces for integrating Moodle and Mahara. See this document for a characterization of the type of admin user experience we want: [http://eduforge.org/docman/view.php/176/3200/Mahoodle.pdf Mahoodle.pdf]&lt;br /&gt;
* Moodle UIs&lt;br /&gt;
** Auth plugin config&lt;br /&gt;
** Enrolment plugin config&lt;br /&gt;
** Grade export config&lt;br /&gt;
* SchoolTool UIs&lt;br /&gt;
** similar division of config screens&lt;br /&gt;
** equivalent of Moodle&#039;s &amp;quot;Network Servers&amp;quot; block with links to SSO peers&lt;br /&gt;
** equivalent of &amp;quot;You have logged in from &amp;lt;somelink&amp;gt;&amp;quot; to go back after SSO&lt;br /&gt;
&lt;br /&gt;
==Mnet==&lt;br /&gt;
* What, in summary, does MNET provide?&lt;br /&gt;
** MNET is an XMLRPC implementation that dispatches messages to applications on either side (with a convention for function naming).&lt;br /&gt;
** MNET has a security layer that enforces that every message is encrypted and signed (with regular key rotation).&lt;br /&gt;
** MNET provides a core set of modules to provide common functionality such as SSO, key discovery, ping, and course enrollment.&lt;br /&gt;
&lt;br /&gt;
===Moodle mnet Interfaces===&lt;br /&gt;
* existing: SSO IDP interfaces&lt;br /&gt;
** in integration v1.0, SchoolTool will only be a Service Provider and Moodle will always be the IDentity Provider&lt;br /&gt;
** returns user data sufficient to create account&lt;br /&gt;
* list_user_enrolments(user)&lt;br /&gt;
** returns a list of all enrolments for a given user&lt;br /&gt;
** SchoolTool may call this to get enrolment data ASAP when an unknown user authenticates and an account is created using user_authorise()&lt;br /&gt;
&lt;br /&gt;
===SchoolTool mnet Interfaces===&lt;br /&gt;
* fetch_user(userdata)&lt;br /&gt;
** tell SchoolTool to ask Moodle for one user&#039;s data&lt;br /&gt;
** userdata: associative array such as:&lt;br /&gt;
*** username=&amp;gt;moquist&lt;br /&gt;
*** firstname=&amp;gt;Matt&lt;br /&gt;
*** lastname=&amp;gt;Oquist&lt;br /&gt;
*** idnumber=&amp;gt;1234457 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** email=&amp;gt;moquist@majen.net&lt;br /&gt;
*** password_hash=&amp;gt;234lih23rlh2asldfjas&lt;br /&gt;
*** password_hash_algorithm=&amp;gt;md5&lt;br /&gt;
*** ircnick=&amp;gt;moquist&lt;br /&gt;
*** arbitrary_field=&amp;gt;arbitrary_data_string...&lt;br /&gt;
**** SchoolTool only cares about enough to create a login account.&lt;br /&gt;
**** SchoolTool does not care about student-editable profile fields.&lt;br /&gt;
* new_section(sectiondata)&lt;br /&gt;
** sectiondata: associative array such as:&lt;br /&gt;
*** name=&amp;gt;&amp;quot;Algebra 1 V1 Mrs. Smith: Cats and their Affectations&amp;quot;&lt;br /&gt;
*** idnumber=&amp;gt;197423 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** teacheridnumber=&amp;gt;987234 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** segment=&amp;gt;1 # a section may have more than one semester/segment/term(?)&lt;br /&gt;
* new_enrolment(enrolmentdata)&lt;br /&gt;
** create new association between user &amp;amp; section&lt;br /&gt;
** enrolmentdata: associative array such as:&lt;br /&gt;
*** sectionid=&amp;gt;197423 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** userid=&amp;gt;987234 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** role=&amp;gt;&#039;teacher&#039; # only &#039;student&#039; and &#039;teacher&#039; supported in integration v1.0&lt;br /&gt;
* new_assessment(assessmentdata)&lt;br /&gt;
** create new assessment to be displayed in grade reports&lt;br /&gt;
** assessmentdata: associative array such as:&lt;br /&gt;
*** sectionid=&amp;gt;197423 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** name=&amp;gt;&amp;quot;How to grill a logarithmic sandwich&amp;quot;&lt;br /&gt;
*** idnumber=&amp;gt;73743734 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** chapternum=&amp;gt;3&lt;br /&gt;
*** honors_required=&amp;gt;false&lt;br /&gt;
*** nonhonors_required=&amp;gt;true&lt;br /&gt;
*** extra_credit=&amp;gt;false&lt;br /&gt;
*** pointval=&amp;gt;68&lt;br /&gt;
* new_grade(gradedata)&lt;br /&gt;
** make entry in gradebook&lt;br /&gt;
** gradedata: associative array such as:&lt;br /&gt;
*** assessmentid=&amp;gt;73743734&lt;br /&gt;
*** userid=&amp;gt;2347234 # unique shared ID of student&lt;br /&gt;
*** points_earned=&amp;gt;62&lt;br /&gt;
*** excepted=&amp;gt;false&lt;br /&gt;
*** attempt_num=&amp;gt;1 # if multiple attempts are allowed&lt;br /&gt;
&lt;br /&gt;
==Phase 2==&lt;br /&gt;
* Some discussion is taking place [http://moodle.org/mod/forum/discuss.php?d=129267 here].&lt;br /&gt;
===Scenarios===&lt;br /&gt;
* Susie Sunglasses will return to Town High School for her senior year. During the last week of school in her junior year, she sits down in the computer lab and enrolls herself in each of the 5 courses she wishes to take during the fall semester. Moodle sends information about these enrollments to SchoolTool, and when THS principal Patricia Participle logs in to SchoolTool in July she is able to see which courses Susie will be taking in the fall.&lt;br /&gt;
 [https://docs.moodle.org/en/images_en/d/d1/Susie-and-patricia.dia Susie-and-patricia.dia source file]&lt;br /&gt;
 [[Image:Susie-and-patricia.png|300px]]&lt;br /&gt;
* Tommy Trackstar is a new student at Town High School. He consults immediately with guidance counselor Guinevere, who logs into Moodle and enrolls him in all his chosen courses. As Tommy completes his work and grades are given (some automatically and some manually by the teacher) in Moodle, each grade is also transferred to SchoolTool, which is thereby able to generate an up-to-date progress report for Tommy at any desired point in time (past or present).&lt;br /&gt;
 [https://docs.moodle.org/en/images_en/a/af/Tommy-and-guinevere1.dia Tommy-and-guinevere1.dia source file]&lt;br /&gt;
 [[Image:Tommy-and-guinevere1.png|500px]]&lt;br /&gt;
* Track season comes around, and Tommy gets too busy with practice. After careful consideration of all his available options, Tommy decides to drop Mathematics of Whistling to have an extra hour to run each day. Either he or guidance counselor Guinevere unenrolls him in Moodle from Mathematics of Whistling. The unenrollment is transferred directly to SchoolTool, and Guinevere is able to enter a note and a withdrawal code to explain what happened. This withdrawal is then included on Tommy&#039;s transcript.&lt;br /&gt;
* Samantha Stupenda, widely rumored to be the most demanding science teacher at THS, has developed assignments for the newest chapter of the textbook she&#039;s writing (&amp;quot;Earth Science Internalized: No Escape&amp;quot;). Samantha adds each of these assignments to her course in Moodle. As she adds each assignment, it is transferred to SchoolTool as a grade item for the section, and SchoolTool will be prepared to accept grade data for each student enrolled in Samantha&#039;s course.&lt;br /&gt;
* Vera Vestibule is taking Bubble Blowing 101, which has no Moodle component at all. Guidance counselor Guinevere logs into SchoolTool and 1) creates a course (&amp;quot;Bubble Blowing 101&amp;quot;), 2) creates a section of the course (&amp;quot;Bubble Blowing 101 taught by Chewie Chomper&amp;quot;), and 3) enrolls Vera in the section. Chewie uploads in SchoolTool a spreadsheet specifying the gradeable assignments in the course. As his students complete the assignments, Chewie enters their grades in SchoolTool, which is then able to include this course and these grades in student progress reports and transcripts.&lt;br /&gt;
* Country Mouse High School has been using Moodle for the past 3 years, and many but not all of the teachers have enthusiastically created Moodle courses that they use extensively in their classrooms. However, some teachers do not have a Moodle presence at all. The principal of CMHS, Betsy Balustrade, keeps a collection of spreadsheets and other documents which she uses to plan and manage the class schedule each year. The technology director of CMHS, Cathy Colever, decides to adopt SchoolTool as the Student Information System (SIS) of CMHS. She installs SchoolTool and integrates it with their existing Moodle, and all the information in Moodle about the teachers, students, courses, enrollments, and grades is transferred to SchoolTool. Cathy provides a series of training sessions for Betsy and her administrative assistant Astra Lodge. Since not every course in the school is in Moodle, Astra enters information about some courses, teachers, and student enrollments into SchoolTool manually. After that, Betsy is able to use SchoolTool to create the schedule for each upcoming semester.&lt;br /&gt;
* Samantha Stupenda also teaches Chemistry. All her class assignments are graded in Moodle, and those grades transfer automatically to SchoolTool. But her lab assignments are not in Moodle, and Samantha creates grade items and enters those grades manually into her Chemistry sections in SchoolTool. Halfway through the school year, Samantha decides to represent those lab assignments in Moodle, and she is careful to use *exactly* the same names that she entered into SchoolTool previously. What happens?&lt;br /&gt;
&lt;br /&gt;
===Flowcharts Because We Like Them===&lt;br /&gt;
* address each of the above scenarios...&lt;br /&gt;
* show technical detail for transfer of user account(s) from Moodle to SchoolTool&lt;br /&gt;
[[Image:SchoolTool_Integration_Userdata.png|200px]]&lt;br /&gt;
* show technical detail for transfer of enrollment(s) from Moodle to SchoolTool&lt;br /&gt;
* show technical detail for transfer of grades(s) from Moodle to SchoolTool&lt;br /&gt;
&lt;br /&gt;
===Part 1: SSO===&lt;br /&gt;
====Tasks====&lt;br /&gt;
* Make Moodle aware of SchoolTool as a potential SSO peer&lt;br /&gt;
* Implement Moodle cron job to ensure all users are always maintained in SchoolTool&lt;br /&gt;
** UI: gracefully add this to existing Mnet SSO config screen if possible&lt;br /&gt;
* Implement SchoolTool SSO interfaces&lt;br /&gt;
** new_user() Mnet interface&lt;br /&gt;
** update_user() Mnet interface&lt;br /&gt;
** UI: link to configured Moodle peers&lt;br /&gt;
** UI: link back to Moodle after Moodle-&amp;gt;SchoolTool SSO login&lt;br /&gt;
** UI: Mnet SSO configuration&lt;br /&gt;
===Part 2: Enrollments===&lt;br /&gt;
====Tasks====&lt;br /&gt;
===Part 3: Grades===&lt;br /&gt;
====Tasks====&lt;br /&gt;
&lt;br /&gt;
==Misc. TODO==&lt;br /&gt;
* Matt/Tom: Find out what reports ECHS will want from SchoolTool&lt;br /&gt;
&lt;br /&gt;
* SchoolTool TODO list&lt;br /&gt;
** Create an &amp;quot;ongoing section&amp;quot; container that will contain (otherwise normal) sections that do not fit into the year/term schema.&lt;br /&gt;
*** integration v1.0 will place all Moodle-driven sections in the &amp;quot;ongoing&amp;quot; container&lt;br /&gt;
** Add enumerated status field to enrollment (e.g., Active, Withdrawn No Grade, Withdrawn Failing, Passed) This will not initially include a workflow, but simply a current state and a history of states.&lt;br /&gt;
** Add support for section history&lt;br /&gt;
*** grading history&lt;br /&gt;
*** enrollment history (including all enrollment status changes)&lt;br /&gt;
*** teacher history&lt;/div&gt;</summary>
		<author><name>Moquist</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/32/en/index.php?title=File:Tommy-and-guinevere1.png&amp;diff=61618</id>
		<title>File:Tommy-and-guinevere1.png</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/32/en/index.php?title=File:Tommy-and-guinevere1.png&amp;diff=61618"/>
		<updated>2009-08-15T17:14:55Z</updated>

		<summary type="html">&lt;p&gt;Moquist: uploaded a new version of &amp;quot;Image:Tommy-and-guinevere1.png&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Moquist</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/32/en/index.php?title=Development:SchoolTool_Integration&amp;diff=61617</id>
		<title>Development:SchoolTool Integration</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/32/en/index.php?title=Development:SchoolTool_Integration&amp;diff=61617"/>
		<updated>2009-08-15T17:12:29Z</updated>

		<summary type="html">&lt;p&gt;Moquist: /* Scenarios */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [http://schooltool.org SchoolTool] SIS project recently released version 1.0, and lots of people could benefit from a solid integration between Moodle and SchoolTool. This page is a work-in-progress specification for the first version of this integration.&lt;br /&gt;
&lt;br /&gt;
==Goal: Moodle-SchoolTool integration modeled on Moodle-Mahara integration.==&lt;br /&gt;
* SchoolTool-Mahara integration should require very little extra effort when this project is complete.&lt;br /&gt;
* SchoolTool+Moodle+Mahara will provide a complete, integrated school administration/learning/portfolio suite that will be easily installable and supportable by time-crunched education systems administrators.&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
* Completely web-based integration configuration (similar to Moodle-Mahara configuration)&lt;br /&gt;
* SSO between SchoolTool and Moodle&lt;br /&gt;
* User accounts, courses, enrolments, assignments, and grades auto-update in SchoolTool&lt;br /&gt;
* Automatic grade transfer from Moodle to SchoolTool&lt;br /&gt;
&lt;br /&gt;
==Integration v1.0 NON-Requirements==&lt;br /&gt;
* Users, courses, enrolments can originate in and be managed within SchoolTool, with Moodle updating from SchoolTool.&lt;br /&gt;
** This will be the goal of the next version of the integration.&lt;br /&gt;
&lt;br /&gt;
==Assumptions==&lt;br /&gt;
* SchoolTool is the authoritative reporting application.&lt;br /&gt;
* Moodle drives all data creation and management.&lt;br /&gt;
&lt;br /&gt;
==Supported versions==&lt;br /&gt;
* SchoolTool 1.0&lt;br /&gt;
* Moodle 1.9.5+&lt;br /&gt;
&lt;br /&gt;
==Terminology Disambiguation==&lt;br /&gt;
* course: A SchoolTool course.&lt;br /&gt;
** SchoolTool &amp;quot;course&amp;quot; has no Moodle analogue. (&amp;quot;Algebra 1&amp;quot;) can have multiple &amp;quot;sections&amp;quot; (&amp;quot;Algebra * 1 @ 9:15 taught by Mr. Smith&amp;quot;).&lt;br /&gt;
* section: A SchoolTool section, a Moodle course.&lt;br /&gt;
&lt;br /&gt;
==Background info and references==&lt;br /&gt;
* [https://docs.moodle.org/en/Grades Moodle 1.9+ gradebook]&lt;br /&gt;
* [https://docs.moodle.org/en/External_database Moodle external DB enrolment plugin ]&lt;br /&gt;
&lt;br /&gt;
==Implementation notes/ideas==&lt;br /&gt;
* The [http://git.catalyst.net.nz/mnet.git/ PHP mnet library] has been [https://code.edge.launchpad.net/~mnet-maintainers/mnet-wsgi/main ported to python.]&lt;br /&gt;
** SchoolTool will need to use this library.&lt;br /&gt;
* Moodle will need some awareness of SchoolTool in the mnet auth plugin. Not sure yet what this entails. (i.e., Mahara shows up in the list. We need SchoolTool in there, too.)&lt;br /&gt;
* Moodle will need an enrolment plugin that gets data from mnet but is otherwise modeled on the external DB enrolment plugin.&lt;br /&gt;
* Moodle will need a gradebook plugin that can pass grades to SchoolTool via mnet.&lt;br /&gt;
* integration v1.0 will not batch updates from Moodle to SchoolTool. Updates will be small and frequent.&lt;br /&gt;
&lt;br /&gt;
==Use Cases==&lt;br /&gt;
* integration v1.0: Drop SchoolTool into existing Moodle site, leave Moodle as driver of user directory and enrollment management.&lt;br /&gt;
** Accounts manually created in SchoolTool may or may not be integratable with Moodle. (Matt recommends this as a feature, but it should not be required for v1.0.)&lt;br /&gt;
** All course creation and enrollment updates must happen first in Moodle and be transferred from there to SchoolTool.&lt;br /&gt;
** Enrollment can be student-driven.&lt;br /&gt;
** An interactive enrollment in Moodle kicks off an immediate transaction to record the enrollment in schooltool.&lt;br /&gt;
* future integration version only: Drop SchoolTool into existing Moodle site, after bulk data transfer from Moodle-&amp;gt;SchoolTool, flip configuration and use SchoolTool as the authoritative user directory and/or enrollment management system.&lt;br /&gt;
** Could this be used to migrate to SchoolTool from another SIS (integrated somehow with Moodle) by way of Moodle?&lt;br /&gt;
* Start fresh with both.&lt;br /&gt;
* future integration version only: Drop Moodle into SchoolTool site.&lt;br /&gt;
** maybe not important for v1.0, might basically come for free&lt;br /&gt;
* future integration version only: Drop SchoolTool into Mahara site (and vice-versa)&lt;br /&gt;
&#039;&#039;&#039;In summary, integration v1.0 will be a Moodle-&amp;gt;SchoolTool integration. We are laying a foundation for a future bidirectional integration in which sections are created and teachers and enrollments are managed in SchoolTool, while Moodle regularly reports grades back to SchoolTool.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==User Interfaces==&lt;br /&gt;
* The integration configuration interfaces will be modeled on the existing interfaces for integrating Moodle and Mahara. See this document for a characterization of the type of admin user experience we want: [http://eduforge.org/docman/view.php/176/3200/Mahoodle.pdf Mahoodle.pdf]&lt;br /&gt;
* Moodle UIs&lt;br /&gt;
** Auth plugin config&lt;br /&gt;
** Enrolment plugin config&lt;br /&gt;
** Grade export config&lt;br /&gt;
* SchoolTool UIs&lt;br /&gt;
** similar division of config screens&lt;br /&gt;
** equivalent of Moodle&#039;s &amp;quot;Network Servers&amp;quot; block with links to SSO peers&lt;br /&gt;
** equivalent of &amp;quot;You have logged in from &amp;lt;somelink&amp;gt;&amp;quot; to go back after SSO&lt;br /&gt;
&lt;br /&gt;
==Mnet==&lt;br /&gt;
* What, in summary, does MNET provide?&lt;br /&gt;
** MNET is an XMLRPC implementation that dispatches messages to applications on either side (with a convention for function naming).&lt;br /&gt;
** MNET has a security layer that enforces that every message is encrypted and signed (with regular key rotation).&lt;br /&gt;
** MNET provides a core set of modules to provide common functionality such as SSO, key discovery, ping, and course enrollment.&lt;br /&gt;
&lt;br /&gt;
===Moodle mnet Interfaces===&lt;br /&gt;
* existing: SSO IDP interfaces&lt;br /&gt;
** in integration v1.0, SchoolTool will only be a Service Provider and Moodle will always be the IDentity Provider&lt;br /&gt;
** returns user data sufficient to create account&lt;br /&gt;
* list_user_enrolments(user)&lt;br /&gt;
** returns a list of all enrolments for a given user&lt;br /&gt;
** SchoolTool may call this to get enrolment data ASAP when an unknown user authenticates and an account is created using user_authorise()&lt;br /&gt;
&lt;br /&gt;
===SchoolTool mnet Interfaces===&lt;br /&gt;
* fetch_user(userdata)&lt;br /&gt;
** tell SchoolTool to ask Moodle for one user&#039;s data&lt;br /&gt;
** userdata: associative array such as:&lt;br /&gt;
*** username=&amp;gt;moquist&lt;br /&gt;
*** firstname=&amp;gt;Matt&lt;br /&gt;
*** lastname=&amp;gt;Oquist&lt;br /&gt;
*** idnumber=&amp;gt;1234457 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** email=&amp;gt;moquist@majen.net&lt;br /&gt;
*** password_hash=&amp;gt;234lih23rlh2asldfjas&lt;br /&gt;
*** password_hash_algorithm=&amp;gt;md5&lt;br /&gt;
*** ircnick=&amp;gt;moquist&lt;br /&gt;
*** arbitrary_field=&amp;gt;arbitrary_data_string...&lt;br /&gt;
**** SchoolTool only cares about enough to create a login account.&lt;br /&gt;
**** SchoolTool does not care about student-editable profile fields.&lt;br /&gt;
* new_section(sectiondata)&lt;br /&gt;
** sectiondata: associative array such as:&lt;br /&gt;
*** name=&amp;gt;&amp;quot;Algebra 1 V1 Mrs. Smith: Cats and their Affectations&amp;quot;&lt;br /&gt;
*** idnumber=&amp;gt;197423 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** teacheridnumber=&amp;gt;987234 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** segment=&amp;gt;1 # a section may have more than one semester/segment/term(?)&lt;br /&gt;
* new_enrolment(enrolmentdata)&lt;br /&gt;
** create new association between user &amp;amp; section&lt;br /&gt;
** enrolmentdata: associative array such as:&lt;br /&gt;
*** sectionid=&amp;gt;197423 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** userid=&amp;gt;987234 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** role=&amp;gt;&#039;teacher&#039; # only &#039;student&#039; and &#039;teacher&#039; supported in integration v1.0&lt;br /&gt;
* new_assessment(assessmentdata)&lt;br /&gt;
** create new assessment to be displayed in grade reports&lt;br /&gt;
** assessmentdata: associative array such as:&lt;br /&gt;
*** sectionid=&amp;gt;197423 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** name=&amp;gt;&amp;quot;How to grill a logarithmic sandwich&amp;quot;&lt;br /&gt;
*** idnumber=&amp;gt;73743734 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** chapternum=&amp;gt;3&lt;br /&gt;
*** honors_required=&amp;gt;false&lt;br /&gt;
*** nonhonors_required=&amp;gt;true&lt;br /&gt;
*** extra_credit=&amp;gt;false&lt;br /&gt;
*** pointval=&amp;gt;68&lt;br /&gt;
* new_grade(gradedata)&lt;br /&gt;
** make entry in gradebook&lt;br /&gt;
** gradedata: associative array such as:&lt;br /&gt;
*** assessmentid=&amp;gt;73743734&lt;br /&gt;
*** userid=&amp;gt;2347234 # unique shared ID of student&lt;br /&gt;
*** points_earned=&amp;gt;62&lt;br /&gt;
*** excepted=&amp;gt;false&lt;br /&gt;
*** attempt_num=&amp;gt;1 # if multiple attempts are allowed&lt;br /&gt;
&lt;br /&gt;
==Phase 2==&lt;br /&gt;
* Some discussion is taking place [http://moodle.org/mod/forum/discuss.php?d=129267 here].&lt;br /&gt;
===Scenarios===&lt;br /&gt;
* Susie Sunglasses will return to Town High School for her senior year. During the last week of school in her junior year, she sits down in the computer lab and enrolls herself in each of the 5 courses she wishes to take during the fall semester. Moodle sends information about these enrollments to SchoolTool, and when THS principal Patricia Participle logs in to SchoolTool in July she is able to see which courses Susie will be taking in the fall.&lt;br /&gt;
 [https://docs.moodle.org/en/images_en/d/d1/Susie-and-patricia.dia Susie-and-patricia.dia source file]&lt;br /&gt;
 [[Image:Susie-and-patricia.png|300px]]&lt;br /&gt;
* Tommy Trackstar is a new student at Town High School. He consults immediately with guidance counselor Guinevere, who logs into Moodle and enrolls him in all his chosen courses. As Tommy completes his work and grades are given (some automatically and some manually by the teacher) in Moodle, each grade is also transferred to SchoolTool, which is thereby able to generate an up-to-date progress report for Tommy at any desired point in time (past or present).&lt;br /&gt;
 [https://docs.moodle.org/en/images_en/a/af/Tommy-and-guinevere1.dia Tommy-and-guinevere1.dia source file]&lt;br /&gt;
 [[Image:Tommy-and-guinevere1.png|300px]]&lt;br /&gt;
* Track season comes around, and Tommy gets too busy with practice. After careful consideration of all his available options, Tommy decides to drop Mathematics of Whistling to have an extra hour to run each day. Either he or guidance counselor Guinevere unenrolls him in Moodle from Mathematics of Whistling. The unenrollment is transferred directly to SchoolTool, and Guinevere is able to enter a note and a withdrawal code to explain what happened. This withdrawal is then included on Tommy&#039;s transcript.&lt;br /&gt;
* Samantha Stupenda, widely rumored to be the most demanding science teacher at THS, has developed assignments for the newest chapter of the textbook she&#039;s writing (&amp;quot;Earth Science Internalized: No Escape&amp;quot;). Samantha adds each of these assignments to her course in Moodle. As she adds each assignment, it is transferred to SchoolTool as a grade item for the section, and SchoolTool will be prepared to accept grade data for each student enrolled in Samantha&#039;s course.&lt;br /&gt;
* Vera Vestibule is taking Bubble Blowing 101, which has no Moodle component at all. Guidance counselor Guinevere logs into SchoolTool and 1) creates a course (&amp;quot;Bubble Blowing 101&amp;quot;), 2) creates a section of the course (&amp;quot;Bubble Blowing 101 taught by Chewie Chomper&amp;quot;), and 3) enrolls Vera in the section. Chewie uploads in SchoolTool a spreadsheet specifying the gradeable assignments in the course. As his students complete the assignments, Chewie enters their grades in SchoolTool, which is then able to include this course and these grades in student progress reports and transcripts.&lt;br /&gt;
* Country Mouse High School has been using Moodle for the past 3 years, and many but not all of the teachers have enthusiastically created Moodle courses that they use extensively in their classrooms. However, some teachers do not have a Moodle presence at all. The principal of CMHS, Betsy Balustrade, keeps a collection of spreadsheets and other documents which she uses to plan and manage the class schedule each year. The technology director of CMHS, Cathy Colever, decides to adopt SchoolTool as the Student Information System (SIS) of CMHS. She installs SchoolTool and integrates it with their existing Moodle, and all the information in Moodle about the teachers, students, courses, enrollments, and grades is transferred to SchoolTool. Cathy provides a series of training sessions for Betsy and her administrative assistant Astra Lodge. Since not every course in the school is in Moodle, Astra enters information about some courses, teachers, and student enrollments into SchoolTool manually. After that, Betsy is able to use SchoolTool to create the schedule for each upcoming semester.&lt;br /&gt;
* Samantha Stupenda also teaches Chemistry. All her class assignments are graded in Moodle, and those grades transfer automatically to SchoolTool. But her lab assignments are not in Moodle, and Samantha creates grade items and enters those grades manually into her Chemistry sections in SchoolTool. Halfway through the school year, Samantha decides to represent those lab assignments in Moodle, and she is careful to use *exactly* the same names that she entered into SchoolTool previously. What happens?&lt;br /&gt;
&lt;br /&gt;
===Flowcharts Because We Like Them===&lt;br /&gt;
* address each of the above scenarios...&lt;br /&gt;
* show technical detail for transfer of user account(s) from Moodle to SchoolTool&lt;br /&gt;
[[Image:SchoolTool_Integration_Userdata.png|200px]]&lt;br /&gt;
* show technical detail for transfer of enrollment(s) from Moodle to SchoolTool&lt;br /&gt;
* show technical detail for transfer of grades(s) from Moodle to SchoolTool&lt;br /&gt;
&lt;br /&gt;
===Part 1: SSO===&lt;br /&gt;
====Tasks====&lt;br /&gt;
* Make Moodle aware of SchoolTool as a potential SSO peer&lt;br /&gt;
* Implement Moodle cron job to ensure all users are always maintained in SchoolTool&lt;br /&gt;
** UI: gracefully add this to existing Mnet SSO config screen if possible&lt;br /&gt;
* Implement SchoolTool SSO interfaces&lt;br /&gt;
** new_user() Mnet interface&lt;br /&gt;
** update_user() Mnet interface&lt;br /&gt;
** UI: link to configured Moodle peers&lt;br /&gt;
** UI: link back to Moodle after Moodle-&amp;gt;SchoolTool SSO login&lt;br /&gt;
** UI: Mnet SSO configuration&lt;br /&gt;
===Part 2: Enrollments===&lt;br /&gt;
====Tasks====&lt;br /&gt;
===Part 3: Grades===&lt;br /&gt;
====Tasks====&lt;br /&gt;
&lt;br /&gt;
==Misc. TODO==&lt;br /&gt;
* Matt/Tom: Find out what reports ECHS will want from SchoolTool&lt;br /&gt;
&lt;br /&gt;
* SchoolTool TODO list&lt;br /&gt;
** Create an &amp;quot;ongoing section&amp;quot; container that will contain (otherwise normal) sections that do not fit into the year/term schema.&lt;br /&gt;
*** integration v1.0 will place all Moodle-driven sections in the &amp;quot;ongoing&amp;quot; container&lt;br /&gt;
** Add enumerated status field to enrollment (e.g., Active, Withdrawn No Grade, Withdrawn Failing, Passed) This will not initially include a workflow, but simply a current state and a history of states.&lt;br /&gt;
** Add support for section history&lt;br /&gt;
*** grading history&lt;br /&gt;
*** enrollment history (including all enrollment status changes)&lt;br /&gt;
*** teacher history&lt;/div&gt;</summary>
		<author><name>Moquist</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/32/en/index.php?title=Development:SchoolTool_Integration&amp;diff=61616</id>
		<title>Development:SchoolTool Integration</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/32/en/index.php?title=Development:SchoolTool_Integration&amp;diff=61616"/>
		<updated>2009-08-15T17:11:47Z</updated>

		<summary type="html">&lt;p&gt;Moquist: /* Scenarios */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [http://schooltool.org SchoolTool] SIS project recently released version 1.0, and lots of people could benefit from a solid integration between Moodle and SchoolTool. This page is a work-in-progress specification for the first version of this integration.&lt;br /&gt;
&lt;br /&gt;
==Goal: Moodle-SchoolTool integration modeled on Moodle-Mahara integration.==&lt;br /&gt;
* SchoolTool-Mahara integration should require very little extra effort when this project is complete.&lt;br /&gt;
* SchoolTool+Moodle+Mahara will provide a complete, integrated school administration/learning/portfolio suite that will be easily installable and supportable by time-crunched education systems administrators.&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
* Completely web-based integration configuration (similar to Moodle-Mahara configuration)&lt;br /&gt;
* SSO between SchoolTool and Moodle&lt;br /&gt;
* User accounts, courses, enrolments, assignments, and grades auto-update in SchoolTool&lt;br /&gt;
* Automatic grade transfer from Moodle to SchoolTool&lt;br /&gt;
&lt;br /&gt;
==Integration v1.0 NON-Requirements==&lt;br /&gt;
* Users, courses, enrolments can originate in and be managed within SchoolTool, with Moodle updating from SchoolTool.&lt;br /&gt;
** This will be the goal of the next version of the integration.&lt;br /&gt;
&lt;br /&gt;
==Assumptions==&lt;br /&gt;
* SchoolTool is the authoritative reporting application.&lt;br /&gt;
* Moodle drives all data creation and management.&lt;br /&gt;
&lt;br /&gt;
==Supported versions==&lt;br /&gt;
* SchoolTool 1.0&lt;br /&gt;
* Moodle 1.9.5+&lt;br /&gt;
&lt;br /&gt;
==Terminology Disambiguation==&lt;br /&gt;
* course: A SchoolTool course.&lt;br /&gt;
** SchoolTool &amp;quot;course&amp;quot; has no Moodle analogue. (&amp;quot;Algebra 1&amp;quot;) can have multiple &amp;quot;sections&amp;quot; (&amp;quot;Algebra * 1 @ 9:15 taught by Mr. Smith&amp;quot;).&lt;br /&gt;
* section: A SchoolTool section, a Moodle course.&lt;br /&gt;
&lt;br /&gt;
==Background info and references==&lt;br /&gt;
* [https://docs.moodle.org/en/Grades Moodle 1.9+ gradebook]&lt;br /&gt;
* [https://docs.moodle.org/en/External_database Moodle external DB enrolment plugin ]&lt;br /&gt;
&lt;br /&gt;
==Implementation notes/ideas==&lt;br /&gt;
* The [http://git.catalyst.net.nz/mnet.git/ PHP mnet library] has been [https://code.edge.launchpad.net/~mnet-maintainers/mnet-wsgi/main ported to python.]&lt;br /&gt;
** SchoolTool will need to use this library.&lt;br /&gt;
* Moodle will need some awareness of SchoolTool in the mnet auth plugin. Not sure yet what this entails. (i.e., Mahara shows up in the list. We need SchoolTool in there, too.)&lt;br /&gt;
* Moodle will need an enrolment plugin that gets data from mnet but is otherwise modeled on the external DB enrolment plugin.&lt;br /&gt;
* Moodle will need a gradebook plugin that can pass grades to SchoolTool via mnet.&lt;br /&gt;
* integration v1.0 will not batch updates from Moodle to SchoolTool. Updates will be small and frequent.&lt;br /&gt;
&lt;br /&gt;
==Use Cases==&lt;br /&gt;
* integration v1.0: Drop SchoolTool into existing Moodle site, leave Moodle as driver of user directory and enrollment management.&lt;br /&gt;
** Accounts manually created in SchoolTool may or may not be integratable with Moodle. (Matt recommends this as a feature, but it should not be required for v1.0.)&lt;br /&gt;
** All course creation and enrollment updates must happen first in Moodle and be transferred from there to SchoolTool.&lt;br /&gt;
** Enrollment can be student-driven.&lt;br /&gt;
** An interactive enrollment in Moodle kicks off an immediate transaction to record the enrollment in schooltool.&lt;br /&gt;
* future integration version only: Drop SchoolTool into existing Moodle site, after bulk data transfer from Moodle-&amp;gt;SchoolTool, flip configuration and use SchoolTool as the authoritative user directory and/or enrollment management system.&lt;br /&gt;
** Could this be used to migrate to SchoolTool from another SIS (integrated somehow with Moodle) by way of Moodle?&lt;br /&gt;
* Start fresh with both.&lt;br /&gt;
* future integration version only: Drop Moodle into SchoolTool site.&lt;br /&gt;
** maybe not important for v1.0, might basically come for free&lt;br /&gt;
* future integration version only: Drop SchoolTool into Mahara site (and vice-versa)&lt;br /&gt;
&#039;&#039;&#039;In summary, integration v1.0 will be a Moodle-&amp;gt;SchoolTool integration. We are laying a foundation for a future bidirectional integration in which sections are created and teachers and enrollments are managed in SchoolTool, while Moodle regularly reports grades back to SchoolTool.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==User Interfaces==&lt;br /&gt;
* The integration configuration interfaces will be modeled on the existing interfaces for integrating Moodle and Mahara. See this document for a characterization of the type of admin user experience we want: [http://eduforge.org/docman/view.php/176/3200/Mahoodle.pdf Mahoodle.pdf]&lt;br /&gt;
* Moodle UIs&lt;br /&gt;
** Auth plugin config&lt;br /&gt;
** Enrolment plugin config&lt;br /&gt;
** Grade export config&lt;br /&gt;
* SchoolTool UIs&lt;br /&gt;
** similar division of config screens&lt;br /&gt;
** equivalent of Moodle&#039;s &amp;quot;Network Servers&amp;quot; block with links to SSO peers&lt;br /&gt;
** equivalent of &amp;quot;You have logged in from &amp;lt;somelink&amp;gt;&amp;quot; to go back after SSO&lt;br /&gt;
&lt;br /&gt;
==Mnet==&lt;br /&gt;
* What, in summary, does MNET provide?&lt;br /&gt;
** MNET is an XMLRPC implementation that dispatches messages to applications on either side (with a convention for function naming).&lt;br /&gt;
** MNET has a security layer that enforces that every message is encrypted and signed (with regular key rotation).&lt;br /&gt;
** MNET provides a core set of modules to provide common functionality such as SSO, key discovery, ping, and course enrollment.&lt;br /&gt;
&lt;br /&gt;
===Moodle mnet Interfaces===&lt;br /&gt;
* existing: SSO IDP interfaces&lt;br /&gt;
** in integration v1.0, SchoolTool will only be a Service Provider and Moodle will always be the IDentity Provider&lt;br /&gt;
** returns user data sufficient to create account&lt;br /&gt;
* list_user_enrolments(user)&lt;br /&gt;
** returns a list of all enrolments for a given user&lt;br /&gt;
** SchoolTool may call this to get enrolment data ASAP when an unknown user authenticates and an account is created using user_authorise()&lt;br /&gt;
&lt;br /&gt;
===SchoolTool mnet Interfaces===&lt;br /&gt;
* fetch_user(userdata)&lt;br /&gt;
** tell SchoolTool to ask Moodle for one user&#039;s data&lt;br /&gt;
** userdata: associative array such as:&lt;br /&gt;
*** username=&amp;gt;moquist&lt;br /&gt;
*** firstname=&amp;gt;Matt&lt;br /&gt;
*** lastname=&amp;gt;Oquist&lt;br /&gt;
*** idnumber=&amp;gt;1234457 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** email=&amp;gt;moquist@majen.net&lt;br /&gt;
*** password_hash=&amp;gt;234lih23rlh2asldfjas&lt;br /&gt;
*** password_hash_algorithm=&amp;gt;md5&lt;br /&gt;
*** ircnick=&amp;gt;moquist&lt;br /&gt;
*** arbitrary_field=&amp;gt;arbitrary_data_string...&lt;br /&gt;
**** SchoolTool only cares about enough to create a login account.&lt;br /&gt;
**** SchoolTool does not care about student-editable profile fields.&lt;br /&gt;
* new_section(sectiondata)&lt;br /&gt;
** sectiondata: associative array such as:&lt;br /&gt;
*** name=&amp;gt;&amp;quot;Algebra 1 V1 Mrs. Smith: Cats and their Affectations&amp;quot;&lt;br /&gt;
*** idnumber=&amp;gt;197423 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** teacheridnumber=&amp;gt;987234 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** segment=&amp;gt;1 # a section may have more than one semester/segment/term(?)&lt;br /&gt;
* new_enrolment(enrolmentdata)&lt;br /&gt;
** create new association between user &amp;amp; section&lt;br /&gt;
** enrolmentdata: associative array such as:&lt;br /&gt;
*** sectionid=&amp;gt;197423 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** userid=&amp;gt;987234 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** role=&amp;gt;&#039;teacher&#039; # only &#039;student&#039; and &#039;teacher&#039; supported in integration v1.0&lt;br /&gt;
* new_assessment(assessmentdata)&lt;br /&gt;
** create new assessment to be displayed in grade reports&lt;br /&gt;
** assessmentdata: associative array such as:&lt;br /&gt;
*** sectionid=&amp;gt;197423 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** name=&amp;gt;&amp;quot;How to grill a logarithmic sandwich&amp;quot;&lt;br /&gt;
*** idnumber=&amp;gt;73743734 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** chapternum=&amp;gt;3&lt;br /&gt;
*** honors_required=&amp;gt;false&lt;br /&gt;
*** nonhonors_required=&amp;gt;true&lt;br /&gt;
*** extra_credit=&amp;gt;false&lt;br /&gt;
*** pointval=&amp;gt;68&lt;br /&gt;
* new_grade(gradedata)&lt;br /&gt;
** make entry in gradebook&lt;br /&gt;
** gradedata: associative array such as:&lt;br /&gt;
*** assessmentid=&amp;gt;73743734&lt;br /&gt;
*** userid=&amp;gt;2347234 # unique shared ID of student&lt;br /&gt;
*** points_earned=&amp;gt;62&lt;br /&gt;
*** excepted=&amp;gt;false&lt;br /&gt;
*** attempt_num=&amp;gt;1 # if multiple attempts are allowed&lt;br /&gt;
&lt;br /&gt;
==Phase 2==&lt;br /&gt;
* Some discussion is taking place [http://moodle.org/mod/forum/discuss.php?d=129267 here].&lt;br /&gt;
===Scenarios===&lt;br /&gt;
* Susie Sunglasses will return to Town High School for her senior year. During the last week of school in her junior year, she sits down in the computer lab and enrolls herself in each of the 5 courses she wishes to take during the fall semester. Moodle sends information about these enrollments to SchoolTool, and when THS principal Patricia Participle logs in to SchoolTool in July she is able to see which courses Susie will be taking in the fall.&lt;br /&gt;
 [https://docs.moodle.org/en/images_en/d/d1/Susie-and-patricia.dia Susie-and-patricia.dia source file]&lt;br /&gt;
 [[Image:Susie-and-patricia.png|300px]]&lt;br /&gt;
* Tommy Trackstar is a new student at Town High School. He consults immediately with guidance counselor Guinevere, who logs into Moodle and enrolls him in all his chosen courses. As Tommy completes his work and grades are given (some automatically and some manually by the teacher) in Moodle, each grade is also transferred to SchoolTool, which is thereby able to generate an up-to-date progress report for Tommy at any desired point in time (past or present).&lt;br /&gt;
 [https://docs.moodle.org/en/images_en/a/af/Tommy-and-guinevere1.dia Tommy-and-guinevere1.dia source file]&lt;br /&gt;
 [[Image:https://docs.moodle.org/en/images_en/f/f0/Tommy-and-guinevere1.png|300px]]&lt;br /&gt;
* Track season comes around, and Tommy gets too busy with practice. After careful consideration of all his available options, Tommy decides to drop Mathematics of Whistling to have an extra hour to run each day. Either he or guidance counselor Guinevere unenrolls him in Moodle from Mathematics of Whistling. The unenrollment is transferred directly to SchoolTool, and Guinevere is able to enter a note and a withdrawal code to explain what happened. This withdrawal is then included on Tommy&#039;s transcript.&lt;br /&gt;
* Samantha Stupenda, widely rumored to be the most demanding science teacher at THS, has developed assignments for the newest chapter of the textbook she&#039;s writing (&amp;quot;Earth Science Internalized: No Escape&amp;quot;). Samantha adds each of these assignments to her course in Moodle. As she adds each assignment, it is transferred to SchoolTool as a grade item for the section, and SchoolTool will be prepared to accept grade data for each student enrolled in Samantha&#039;s course.&lt;br /&gt;
* Vera Vestibule is taking Bubble Blowing 101, which has no Moodle component at all. Guidance counselor Guinevere logs into SchoolTool and 1) creates a course (&amp;quot;Bubble Blowing 101&amp;quot;), 2) creates a section of the course (&amp;quot;Bubble Blowing 101 taught by Chewie Chomper&amp;quot;), and 3) enrolls Vera in the section. Chewie uploads in SchoolTool a spreadsheet specifying the gradeable assignments in the course. As his students complete the assignments, Chewie enters their grades in SchoolTool, which is then able to include this course and these grades in student progress reports and transcripts.&lt;br /&gt;
* Country Mouse High School has been using Moodle for the past 3 years, and many but not all of the teachers have enthusiastically created Moodle courses that they use extensively in their classrooms. However, some teachers do not have a Moodle presence at all. The principal of CMHS, Betsy Balustrade, keeps a collection of spreadsheets and other documents which she uses to plan and manage the class schedule each year. The technology director of CMHS, Cathy Colever, decides to adopt SchoolTool as the Student Information System (SIS) of CMHS. She installs SchoolTool and integrates it with their existing Moodle, and all the information in Moodle about the teachers, students, courses, enrollments, and grades is transferred to SchoolTool. Cathy provides a series of training sessions for Betsy and her administrative assistant Astra Lodge. Since not every course in the school is in Moodle, Astra enters information about some courses, teachers, and student enrollments into SchoolTool manually. After that, Betsy is able to use SchoolTool to create the schedule for each upcoming semester.&lt;br /&gt;
* Samantha Stupenda also teaches Chemistry. All her class assignments are graded in Moodle, and those grades transfer automatically to SchoolTool. But her lab assignments are not in Moodle, and Samantha creates grade items and enters those grades manually into her Chemistry sections in SchoolTool. Halfway through the school year, Samantha decides to represent those lab assignments in Moodle, and she is careful to use *exactly* the same names that she entered into SchoolTool previously. What happens?&lt;br /&gt;
&lt;br /&gt;
===Flowcharts Because We Like Them===&lt;br /&gt;
* address each of the above scenarios...&lt;br /&gt;
* show technical detail for transfer of user account(s) from Moodle to SchoolTool&lt;br /&gt;
[[Image:SchoolTool_Integration_Userdata.png|200px]]&lt;br /&gt;
* show technical detail for transfer of enrollment(s) from Moodle to SchoolTool&lt;br /&gt;
* show technical detail for transfer of grades(s) from Moodle to SchoolTool&lt;br /&gt;
&lt;br /&gt;
===Part 1: SSO===&lt;br /&gt;
====Tasks====&lt;br /&gt;
* Make Moodle aware of SchoolTool as a potential SSO peer&lt;br /&gt;
* Implement Moodle cron job to ensure all users are always maintained in SchoolTool&lt;br /&gt;
** UI: gracefully add this to existing Mnet SSO config screen if possible&lt;br /&gt;
* Implement SchoolTool SSO interfaces&lt;br /&gt;
** new_user() Mnet interface&lt;br /&gt;
** update_user() Mnet interface&lt;br /&gt;
** UI: link to configured Moodle peers&lt;br /&gt;
** UI: link back to Moodle after Moodle-&amp;gt;SchoolTool SSO login&lt;br /&gt;
** UI: Mnet SSO configuration&lt;br /&gt;
===Part 2: Enrollments===&lt;br /&gt;
====Tasks====&lt;br /&gt;
===Part 3: Grades===&lt;br /&gt;
====Tasks====&lt;br /&gt;
&lt;br /&gt;
==Misc. TODO==&lt;br /&gt;
* Matt/Tom: Find out what reports ECHS will want from SchoolTool&lt;br /&gt;
&lt;br /&gt;
* SchoolTool TODO list&lt;br /&gt;
** Create an &amp;quot;ongoing section&amp;quot; container that will contain (otherwise normal) sections that do not fit into the year/term schema.&lt;br /&gt;
*** integration v1.0 will place all Moodle-driven sections in the &amp;quot;ongoing&amp;quot; container&lt;br /&gt;
** Add enumerated status field to enrollment (e.g., Active, Withdrawn No Grade, Withdrawn Failing, Passed) This will not initially include a workflow, but simply a current state and a history of states.&lt;br /&gt;
** Add support for section history&lt;br /&gt;
*** grading history&lt;br /&gt;
*** enrollment history (including all enrollment status changes)&lt;br /&gt;
*** teacher history&lt;/div&gt;</summary>
		<author><name>Moquist</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/32/en/index.php?title=File:Tommy-and-guinevere1.png&amp;diff=61615</id>
		<title>File:Tommy-and-guinevere1.png</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/32/en/index.php?title=File:Tommy-and-guinevere1.png&amp;diff=61615"/>
		<updated>2009-08-15T17:11:20Z</updated>

		<summary type="html">&lt;p&gt;Moquist: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Moquist</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/32/en/index.php?title=Development:SchoolTool_Integration&amp;diff=61614</id>
		<title>Development:SchoolTool Integration</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/32/en/index.php?title=Development:SchoolTool_Integration&amp;diff=61614"/>
		<updated>2009-08-15T17:10:51Z</updated>

		<summary type="html">&lt;p&gt;Moquist: /* Scenarios */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [http://schooltool.org SchoolTool] SIS project recently released version 1.0, and lots of people could benefit from a solid integration between Moodle and SchoolTool. This page is a work-in-progress specification for the first version of this integration.&lt;br /&gt;
&lt;br /&gt;
==Goal: Moodle-SchoolTool integration modeled on Moodle-Mahara integration.==&lt;br /&gt;
* SchoolTool-Mahara integration should require very little extra effort when this project is complete.&lt;br /&gt;
* SchoolTool+Moodle+Mahara will provide a complete, integrated school administration/learning/portfolio suite that will be easily installable and supportable by time-crunched education systems administrators.&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
* Completely web-based integration configuration (similar to Moodle-Mahara configuration)&lt;br /&gt;
* SSO between SchoolTool and Moodle&lt;br /&gt;
* User accounts, courses, enrolments, assignments, and grades auto-update in SchoolTool&lt;br /&gt;
* Automatic grade transfer from Moodle to SchoolTool&lt;br /&gt;
&lt;br /&gt;
==Integration v1.0 NON-Requirements==&lt;br /&gt;
* Users, courses, enrolments can originate in and be managed within SchoolTool, with Moodle updating from SchoolTool.&lt;br /&gt;
** This will be the goal of the next version of the integration.&lt;br /&gt;
&lt;br /&gt;
==Assumptions==&lt;br /&gt;
* SchoolTool is the authoritative reporting application.&lt;br /&gt;
* Moodle drives all data creation and management.&lt;br /&gt;
&lt;br /&gt;
==Supported versions==&lt;br /&gt;
* SchoolTool 1.0&lt;br /&gt;
* Moodle 1.9.5+&lt;br /&gt;
&lt;br /&gt;
==Terminology Disambiguation==&lt;br /&gt;
* course: A SchoolTool course.&lt;br /&gt;
** SchoolTool &amp;quot;course&amp;quot; has no Moodle analogue. (&amp;quot;Algebra 1&amp;quot;) can have multiple &amp;quot;sections&amp;quot; (&amp;quot;Algebra * 1 @ 9:15 taught by Mr. Smith&amp;quot;).&lt;br /&gt;
* section: A SchoolTool section, a Moodle course.&lt;br /&gt;
&lt;br /&gt;
==Background info and references==&lt;br /&gt;
* [https://docs.moodle.org/en/Grades Moodle 1.9+ gradebook]&lt;br /&gt;
* [https://docs.moodle.org/en/External_database Moodle external DB enrolment plugin ]&lt;br /&gt;
&lt;br /&gt;
==Implementation notes/ideas==&lt;br /&gt;
* The [http://git.catalyst.net.nz/mnet.git/ PHP mnet library] has been [https://code.edge.launchpad.net/~mnet-maintainers/mnet-wsgi/main ported to python.]&lt;br /&gt;
** SchoolTool will need to use this library.&lt;br /&gt;
* Moodle will need some awareness of SchoolTool in the mnet auth plugin. Not sure yet what this entails. (i.e., Mahara shows up in the list. We need SchoolTool in there, too.)&lt;br /&gt;
* Moodle will need an enrolment plugin that gets data from mnet but is otherwise modeled on the external DB enrolment plugin.&lt;br /&gt;
* Moodle will need a gradebook plugin that can pass grades to SchoolTool via mnet.&lt;br /&gt;
* integration v1.0 will not batch updates from Moodle to SchoolTool. Updates will be small and frequent.&lt;br /&gt;
&lt;br /&gt;
==Use Cases==&lt;br /&gt;
* integration v1.0: Drop SchoolTool into existing Moodle site, leave Moodle as driver of user directory and enrollment management.&lt;br /&gt;
** Accounts manually created in SchoolTool may or may not be integratable with Moodle. (Matt recommends this as a feature, but it should not be required for v1.0.)&lt;br /&gt;
** All course creation and enrollment updates must happen first in Moodle and be transferred from there to SchoolTool.&lt;br /&gt;
** Enrollment can be student-driven.&lt;br /&gt;
** An interactive enrollment in Moodle kicks off an immediate transaction to record the enrollment in schooltool.&lt;br /&gt;
* future integration version only: Drop SchoolTool into existing Moodle site, after bulk data transfer from Moodle-&amp;gt;SchoolTool, flip configuration and use SchoolTool as the authoritative user directory and/or enrollment management system.&lt;br /&gt;
** Could this be used to migrate to SchoolTool from another SIS (integrated somehow with Moodle) by way of Moodle?&lt;br /&gt;
* Start fresh with both.&lt;br /&gt;
* future integration version only: Drop Moodle into SchoolTool site.&lt;br /&gt;
** maybe not important for v1.0, might basically come for free&lt;br /&gt;
* future integration version only: Drop SchoolTool into Mahara site (and vice-versa)&lt;br /&gt;
&#039;&#039;&#039;In summary, integration v1.0 will be a Moodle-&amp;gt;SchoolTool integration. We are laying a foundation for a future bidirectional integration in which sections are created and teachers and enrollments are managed in SchoolTool, while Moodle regularly reports grades back to SchoolTool.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==User Interfaces==&lt;br /&gt;
* The integration configuration interfaces will be modeled on the existing interfaces for integrating Moodle and Mahara. See this document for a characterization of the type of admin user experience we want: [http://eduforge.org/docman/view.php/176/3200/Mahoodle.pdf Mahoodle.pdf]&lt;br /&gt;
* Moodle UIs&lt;br /&gt;
** Auth plugin config&lt;br /&gt;
** Enrolment plugin config&lt;br /&gt;
** Grade export config&lt;br /&gt;
* SchoolTool UIs&lt;br /&gt;
** similar division of config screens&lt;br /&gt;
** equivalent of Moodle&#039;s &amp;quot;Network Servers&amp;quot; block with links to SSO peers&lt;br /&gt;
** equivalent of &amp;quot;You have logged in from &amp;lt;somelink&amp;gt;&amp;quot; to go back after SSO&lt;br /&gt;
&lt;br /&gt;
==Mnet==&lt;br /&gt;
* What, in summary, does MNET provide?&lt;br /&gt;
** MNET is an XMLRPC implementation that dispatches messages to applications on either side (with a convention for function naming).&lt;br /&gt;
** MNET has a security layer that enforces that every message is encrypted and signed (with regular key rotation).&lt;br /&gt;
** MNET provides a core set of modules to provide common functionality such as SSO, key discovery, ping, and course enrollment.&lt;br /&gt;
&lt;br /&gt;
===Moodle mnet Interfaces===&lt;br /&gt;
* existing: SSO IDP interfaces&lt;br /&gt;
** in integration v1.0, SchoolTool will only be a Service Provider and Moodle will always be the IDentity Provider&lt;br /&gt;
** returns user data sufficient to create account&lt;br /&gt;
* list_user_enrolments(user)&lt;br /&gt;
** returns a list of all enrolments for a given user&lt;br /&gt;
** SchoolTool may call this to get enrolment data ASAP when an unknown user authenticates and an account is created using user_authorise()&lt;br /&gt;
&lt;br /&gt;
===SchoolTool mnet Interfaces===&lt;br /&gt;
* fetch_user(userdata)&lt;br /&gt;
** tell SchoolTool to ask Moodle for one user&#039;s data&lt;br /&gt;
** userdata: associative array such as:&lt;br /&gt;
*** username=&amp;gt;moquist&lt;br /&gt;
*** firstname=&amp;gt;Matt&lt;br /&gt;
*** lastname=&amp;gt;Oquist&lt;br /&gt;
*** idnumber=&amp;gt;1234457 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** email=&amp;gt;moquist@majen.net&lt;br /&gt;
*** password_hash=&amp;gt;234lih23rlh2asldfjas&lt;br /&gt;
*** password_hash_algorithm=&amp;gt;md5&lt;br /&gt;
*** ircnick=&amp;gt;moquist&lt;br /&gt;
*** arbitrary_field=&amp;gt;arbitrary_data_string...&lt;br /&gt;
**** SchoolTool only cares about enough to create a login account.&lt;br /&gt;
**** SchoolTool does not care about student-editable profile fields.&lt;br /&gt;
* new_section(sectiondata)&lt;br /&gt;
** sectiondata: associative array such as:&lt;br /&gt;
*** name=&amp;gt;&amp;quot;Algebra 1 V1 Mrs. Smith: Cats and their Affectations&amp;quot;&lt;br /&gt;
*** idnumber=&amp;gt;197423 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** teacheridnumber=&amp;gt;987234 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** segment=&amp;gt;1 # a section may have more than one semester/segment/term(?)&lt;br /&gt;
* new_enrolment(enrolmentdata)&lt;br /&gt;
** create new association between user &amp;amp; section&lt;br /&gt;
** enrolmentdata: associative array such as:&lt;br /&gt;
*** sectionid=&amp;gt;197423 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** userid=&amp;gt;987234 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** role=&amp;gt;&#039;teacher&#039; # only &#039;student&#039; and &#039;teacher&#039; supported in integration v1.0&lt;br /&gt;
* new_assessment(assessmentdata)&lt;br /&gt;
** create new assessment to be displayed in grade reports&lt;br /&gt;
** assessmentdata: associative array such as:&lt;br /&gt;
*** sectionid=&amp;gt;197423 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** name=&amp;gt;&amp;quot;How to grill a logarithmic sandwich&amp;quot;&lt;br /&gt;
*** idnumber=&amp;gt;73743734 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** chapternum=&amp;gt;3&lt;br /&gt;
*** honors_required=&amp;gt;false&lt;br /&gt;
*** nonhonors_required=&amp;gt;true&lt;br /&gt;
*** extra_credit=&amp;gt;false&lt;br /&gt;
*** pointval=&amp;gt;68&lt;br /&gt;
* new_grade(gradedata)&lt;br /&gt;
** make entry in gradebook&lt;br /&gt;
** gradedata: associative array such as:&lt;br /&gt;
*** assessmentid=&amp;gt;73743734&lt;br /&gt;
*** userid=&amp;gt;2347234 # unique shared ID of student&lt;br /&gt;
*** points_earned=&amp;gt;62&lt;br /&gt;
*** excepted=&amp;gt;false&lt;br /&gt;
*** attempt_num=&amp;gt;1 # if multiple attempts are allowed&lt;br /&gt;
&lt;br /&gt;
==Phase 2==&lt;br /&gt;
* Some discussion is taking place [http://moodle.org/mod/forum/discuss.php?d=129267 here].&lt;br /&gt;
===Scenarios===&lt;br /&gt;
* Susie Sunglasses will return to Town High School for her senior year. During the last week of school in her junior year, she sits down in the computer lab and enrolls herself in each of the 5 courses she wishes to take during the fall semester. Moodle sends information about these enrollments to SchoolTool, and when THS principal Patricia Participle logs in to SchoolTool in July she is able to see which courses Susie will be taking in the fall.&lt;br /&gt;
 [https://docs.moodle.org/en/images_en/d/d1/Susie-and-patricia.dia Susie-and-patricia.dia source file]&lt;br /&gt;
 [[Image:Susie-and-patricia.png|300px]]&lt;br /&gt;
* Tommy Trackstar is a new student at Town High School. He consults immediately with guidance counselor Guinevere, who logs into Moodle and enrolls him in all his chosen courses. As Tommy completes his work and grades are given (some automatically and some manually by the teacher) in Moodle, each grade is also transferred to SchoolTool, which is thereby able to generate an up-to-date progress report for Tommy at any desired point in time (past or present).&lt;br /&gt;
 [https://docs.moodle.org/en/images_en/a/af/Tommy-and-guinevere1.dia Tommy-and-guinevere1.dia source file]&lt;br /&gt;
* Track season comes around, and Tommy gets too busy with practice. After careful consideration of all his available options, Tommy decides to drop Mathematics of Whistling to have an extra hour to run each day. Either he or guidance counselor Guinevere unenrolls him in Moodle from Mathematics of Whistling. The unenrollment is transferred directly to SchoolTool, and Guinevere is able to enter a note and a withdrawal code to explain what happened. This withdrawal is then included on Tommy&#039;s transcript.&lt;br /&gt;
* Samantha Stupenda, widely rumored to be the most demanding science teacher at THS, has developed assignments for the newest chapter of the textbook she&#039;s writing (&amp;quot;Earth Science Internalized: No Escape&amp;quot;). Samantha adds each of these assignments to her course in Moodle. As she adds each assignment, it is transferred to SchoolTool as a grade item for the section, and SchoolTool will be prepared to accept grade data for each student enrolled in Samantha&#039;s course.&lt;br /&gt;
* Vera Vestibule is taking Bubble Blowing 101, which has no Moodle component at all. Guidance counselor Guinevere logs into SchoolTool and 1) creates a course (&amp;quot;Bubble Blowing 101&amp;quot;), 2) creates a section of the course (&amp;quot;Bubble Blowing 101 taught by Chewie Chomper&amp;quot;), and 3) enrolls Vera in the section. Chewie uploads in SchoolTool a spreadsheet specifying the gradeable assignments in the course. As his students complete the assignments, Chewie enters their grades in SchoolTool, which is then able to include this course and these grades in student progress reports and transcripts.&lt;br /&gt;
* Country Mouse High School has been using Moodle for the past 3 years, and many but not all of the teachers have enthusiastically created Moodle courses that they use extensively in their classrooms. However, some teachers do not have a Moodle presence at all. The principal of CMHS, Betsy Balustrade, keeps a collection of spreadsheets and other documents which she uses to plan and manage the class schedule each year. The technology director of CMHS, Cathy Colever, decides to adopt SchoolTool as the Student Information System (SIS) of CMHS. She installs SchoolTool and integrates it with their existing Moodle, and all the information in Moodle about the teachers, students, courses, enrollments, and grades is transferred to SchoolTool. Cathy provides a series of training sessions for Betsy and her administrative assistant Astra Lodge. Since not every course in the school is in Moodle, Astra enters information about some courses, teachers, and student enrollments into SchoolTool manually. After that, Betsy is able to use SchoolTool to create the schedule for each upcoming semester.&lt;br /&gt;
* Samantha Stupenda also teaches Chemistry. All her class assignments are graded in Moodle, and those grades transfer automatically to SchoolTool. But her lab assignments are not in Moodle, and Samantha creates grade items and enters those grades manually into her Chemistry sections in SchoolTool. Halfway through the school year, Samantha decides to represent those lab assignments in Moodle, and she is careful to use *exactly* the same names that she entered into SchoolTool previously. What happens?&lt;br /&gt;
&lt;br /&gt;
===Flowcharts Because We Like Them===&lt;br /&gt;
* address each of the above scenarios...&lt;br /&gt;
* show technical detail for transfer of user account(s) from Moodle to SchoolTool&lt;br /&gt;
[[Image:SchoolTool_Integration_Userdata.png|200px]]&lt;br /&gt;
* show technical detail for transfer of enrollment(s) from Moodle to SchoolTool&lt;br /&gt;
* show technical detail for transfer of grades(s) from Moodle to SchoolTool&lt;br /&gt;
&lt;br /&gt;
===Part 1: SSO===&lt;br /&gt;
====Tasks====&lt;br /&gt;
* Make Moodle aware of SchoolTool as a potential SSO peer&lt;br /&gt;
* Implement Moodle cron job to ensure all users are always maintained in SchoolTool&lt;br /&gt;
** UI: gracefully add this to existing Mnet SSO config screen if possible&lt;br /&gt;
* Implement SchoolTool SSO interfaces&lt;br /&gt;
** new_user() Mnet interface&lt;br /&gt;
** update_user() Mnet interface&lt;br /&gt;
** UI: link to configured Moodle peers&lt;br /&gt;
** UI: link back to Moodle after Moodle-&amp;gt;SchoolTool SSO login&lt;br /&gt;
** UI: Mnet SSO configuration&lt;br /&gt;
===Part 2: Enrollments===&lt;br /&gt;
====Tasks====&lt;br /&gt;
===Part 3: Grades===&lt;br /&gt;
====Tasks====&lt;br /&gt;
&lt;br /&gt;
==Misc. TODO==&lt;br /&gt;
* Matt/Tom: Find out what reports ECHS will want from SchoolTool&lt;br /&gt;
&lt;br /&gt;
* SchoolTool TODO list&lt;br /&gt;
** Create an &amp;quot;ongoing section&amp;quot; container that will contain (otherwise normal) sections that do not fit into the year/term schema.&lt;br /&gt;
*** integration v1.0 will place all Moodle-driven sections in the &amp;quot;ongoing&amp;quot; container&lt;br /&gt;
** Add enumerated status field to enrollment (e.g., Active, Withdrawn No Grade, Withdrawn Failing, Passed) This will not initially include a workflow, but simply a current state and a history of states.&lt;br /&gt;
** Add support for section history&lt;br /&gt;
*** grading history&lt;br /&gt;
*** enrollment history (including all enrollment status changes)&lt;br /&gt;
*** teacher history&lt;/div&gt;</summary>
		<author><name>Moquist</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/32/en/index.php?title=File:Tommy-and-guinevere1.dia&amp;diff=61613</id>
		<title>File:Tommy-and-guinevere1.dia</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/32/en/index.php?title=File:Tommy-and-guinevere1.dia&amp;diff=61613"/>
		<updated>2009-08-15T17:10:17Z</updated>

		<summary type="html">&lt;p&gt;Moquist: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Moquist</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/32/en/index.php?title=Development:SchoolTool_Integration&amp;diff=61590</id>
		<title>Development:SchoolTool Integration</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/32/en/index.php?title=Development:SchoolTool_Integration&amp;diff=61590"/>
		<updated>2009-08-15T00:53:02Z</updated>

		<summary type="html">&lt;p&gt;Moquist: /* Scenarios */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [http://schooltool.org SchoolTool] SIS project recently released version 1.0, and lots of people could benefit from a solid integration between Moodle and SchoolTool. This page is a work-in-progress specification for the first version of this integration.&lt;br /&gt;
&lt;br /&gt;
==Goal: Moodle-SchoolTool integration modeled on Moodle-Mahara integration.==&lt;br /&gt;
* SchoolTool-Mahara integration should require very little extra effort when this project is complete.&lt;br /&gt;
* SchoolTool+Moodle+Mahara will provide a complete, integrated school administration/learning/portfolio suite that will be easily installable and supportable by time-crunched education systems administrators.&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
* Completely web-based integration configuration (similar to Moodle-Mahara configuration)&lt;br /&gt;
* SSO between SchoolTool and Moodle&lt;br /&gt;
* User accounts, courses, enrolments, assignments, and grades auto-update in SchoolTool&lt;br /&gt;
* Automatic grade transfer from Moodle to SchoolTool&lt;br /&gt;
&lt;br /&gt;
==Integration v1.0 NON-Requirements==&lt;br /&gt;
* Users, courses, enrolments can originate in and be managed within SchoolTool, with Moodle updating from SchoolTool.&lt;br /&gt;
** This will be the goal of the next version of the integration.&lt;br /&gt;
&lt;br /&gt;
==Assumptions==&lt;br /&gt;
* SchoolTool is the authoritative reporting application.&lt;br /&gt;
* Moodle drives all data creation and management.&lt;br /&gt;
&lt;br /&gt;
==Supported versions==&lt;br /&gt;
* SchoolTool 1.0&lt;br /&gt;
* Moodle 1.9.5+&lt;br /&gt;
&lt;br /&gt;
==Terminology Disambiguation==&lt;br /&gt;
* course: A SchoolTool course.&lt;br /&gt;
** SchoolTool &amp;quot;course&amp;quot; has no Moodle analogue. (&amp;quot;Algebra 1&amp;quot;) can have multiple &amp;quot;sections&amp;quot; (&amp;quot;Algebra * 1 @ 9:15 taught by Mr. Smith&amp;quot;).&lt;br /&gt;
* section: A SchoolTool section, a Moodle course.&lt;br /&gt;
&lt;br /&gt;
==Background info and references==&lt;br /&gt;
* [https://docs.moodle.org/en/Grades Moodle 1.9+ gradebook]&lt;br /&gt;
* [https://docs.moodle.org/en/External_database Moodle external DB enrolment plugin ]&lt;br /&gt;
&lt;br /&gt;
==Implementation notes/ideas==&lt;br /&gt;
* The [http://git.catalyst.net.nz/mnet.git/ PHP mnet library] has been [https://code.edge.launchpad.net/~mnet-maintainers/mnet-wsgi/main ported to python.]&lt;br /&gt;
** SchoolTool will need to use this library.&lt;br /&gt;
* Moodle will need some awareness of SchoolTool in the mnet auth plugin. Not sure yet what this entails. (i.e., Mahara shows up in the list. We need SchoolTool in there, too.)&lt;br /&gt;
* Moodle will need an enrolment plugin that gets data from mnet but is otherwise modeled on the external DB enrolment plugin.&lt;br /&gt;
* Moodle will need a gradebook plugin that can pass grades to SchoolTool via mnet.&lt;br /&gt;
* integration v1.0 will not batch updates from Moodle to SchoolTool. Updates will be small and frequent.&lt;br /&gt;
&lt;br /&gt;
==Use Cases==&lt;br /&gt;
* integration v1.0: Drop SchoolTool into existing Moodle site, leave Moodle as driver of user directory and enrollment management.&lt;br /&gt;
** Accounts manually created in SchoolTool may or may not be integratable with Moodle. (Matt recommends this as a feature, but it should not be required for v1.0.)&lt;br /&gt;
** All course creation and enrollment updates must happen first in Moodle and be transferred from there to SchoolTool.&lt;br /&gt;
** Enrollment can be student-driven.&lt;br /&gt;
** An interactive enrollment in Moodle kicks off an immediate transaction to record the enrollment in schooltool.&lt;br /&gt;
* future integration version only: Drop SchoolTool into existing Moodle site, after bulk data transfer from Moodle-&amp;gt;SchoolTool, flip configuration and use SchoolTool as the authoritative user directory and/or enrollment management system.&lt;br /&gt;
** Could this be used to migrate to SchoolTool from another SIS (integrated somehow with Moodle) by way of Moodle?&lt;br /&gt;
* Start fresh with both.&lt;br /&gt;
* future integration version only: Drop Moodle into SchoolTool site.&lt;br /&gt;
** maybe not important for v1.0, might basically come for free&lt;br /&gt;
* future integration version only: Drop SchoolTool into Mahara site (and vice-versa)&lt;br /&gt;
&#039;&#039;&#039;In summary, integration v1.0 will be a Moodle-&amp;gt;SchoolTool integration. We are laying a foundation for a future bidirectional integration in which sections are created and teachers and enrollments are managed in SchoolTool, while Moodle regularly reports grades back to SchoolTool.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==User Interfaces==&lt;br /&gt;
* The integration configuration interfaces will be modeled on the existing interfaces for integrating Moodle and Mahara. See this document for a characterization of the type of admin user experience we want: [http://eduforge.org/docman/view.php/176/3200/Mahoodle.pdf Mahoodle.pdf]&lt;br /&gt;
* Moodle UIs&lt;br /&gt;
** Auth plugin config&lt;br /&gt;
** Enrolment plugin config&lt;br /&gt;
** Grade export config&lt;br /&gt;
* SchoolTool UIs&lt;br /&gt;
** similar division of config screens&lt;br /&gt;
** equivalent of Moodle&#039;s &amp;quot;Network Servers&amp;quot; block with links to SSO peers&lt;br /&gt;
** equivalent of &amp;quot;You have logged in from &amp;lt;somelink&amp;gt;&amp;quot; to go back after SSO&lt;br /&gt;
&lt;br /&gt;
==Mnet==&lt;br /&gt;
* What, in summary, does MNET provide?&lt;br /&gt;
** MNET is an XMLRPC implementation that dispatches messages to applications on either side (with a convention for function naming).&lt;br /&gt;
** MNET has a security layer that enforces that every message is encrypted and signed (with regular key rotation).&lt;br /&gt;
** MNET provides a core set of modules to provide common functionality such as SSO, key discovery, ping, and course enrollment.&lt;br /&gt;
&lt;br /&gt;
===Moodle mnet Interfaces===&lt;br /&gt;
* existing: SSO IDP interfaces&lt;br /&gt;
** in integration v1.0, SchoolTool will only be a Service Provider and Moodle will always be the IDentity Provider&lt;br /&gt;
** returns user data sufficient to create account&lt;br /&gt;
* list_user_enrolments(user)&lt;br /&gt;
** returns a list of all enrolments for a given user&lt;br /&gt;
** SchoolTool may call this to get enrolment data ASAP when an unknown user authenticates and an account is created using user_authorise()&lt;br /&gt;
&lt;br /&gt;
===SchoolTool mnet Interfaces===&lt;br /&gt;
* fetch_user(userdata)&lt;br /&gt;
** tell SchoolTool to ask Moodle for one user&#039;s data&lt;br /&gt;
** userdata: associative array such as:&lt;br /&gt;
*** username=&amp;gt;moquist&lt;br /&gt;
*** firstname=&amp;gt;Matt&lt;br /&gt;
*** lastname=&amp;gt;Oquist&lt;br /&gt;
*** idnumber=&amp;gt;1234457 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** email=&amp;gt;moquist@majen.net&lt;br /&gt;
*** password_hash=&amp;gt;234lih23rlh2asldfjas&lt;br /&gt;
*** password_hash_algorithm=&amp;gt;md5&lt;br /&gt;
*** ircnick=&amp;gt;moquist&lt;br /&gt;
*** arbitrary_field=&amp;gt;arbitrary_data_string...&lt;br /&gt;
**** SchoolTool only cares about enough to create a login account.&lt;br /&gt;
**** SchoolTool does not care about student-editable profile fields.&lt;br /&gt;
* new_section(sectiondata)&lt;br /&gt;
** sectiondata: associative array such as:&lt;br /&gt;
*** name=&amp;gt;&amp;quot;Algebra 1 V1 Mrs. Smith: Cats and their Affectations&amp;quot;&lt;br /&gt;
*** idnumber=&amp;gt;197423 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** teacheridnumber=&amp;gt;987234 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** segment=&amp;gt;1 # a section may have more than one semester/segment/term(?)&lt;br /&gt;
* new_enrolment(enrolmentdata)&lt;br /&gt;
** create new association between user &amp;amp; section&lt;br /&gt;
** enrolmentdata: associative array such as:&lt;br /&gt;
*** sectionid=&amp;gt;197423 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** userid=&amp;gt;987234 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** role=&amp;gt;&#039;teacher&#039; # only &#039;student&#039; and &#039;teacher&#039; supported in integration v1.0&lt;br /&gt;
* new_assessment(assessmentdata)&lt;br /&gt;
** create new assessment to be displayed in grade reports&lt;br /&gt;
** assessmentdata: associative array such as:&lt;br /&gt;
*** sectionid=&amp;gt;197423 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** name=&amp;gt;&amp;quot;How to grill a logarithmic sandwich&amp;quot;&lt;br /&gt;
*** idnumber=&amp;gt;73743734 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** chapternum=&amp;gt;3&lt;br /&gt;
*** honors_required=&amp;gt;false&lt;br /&gt;
*** nonhonors_required=&amp;gt;true&lt;br /&gt;
*** extra_credit=&amp;gt;false&lt;br /&gt;
*** pointval=&amp;gt;68&lt;br /&gt;
* new_grade(gradedata)&lt;br /&gt;
** make entry in gradebook&lt;br /&gt;
** gradedata: associative array such as:&lt;br /&gt;
*** assessmentid=&amp;gt;73743734&lt;br /&gt;
*** userid=&amp;gt;2347234 # unique shared ID of student&lt;br /&gt;
*** points_earned=&amp;gt;62&lt;br /&gt;
*** excepted=&amp;gt;false&lt;br /&gt;
*** attempt_num=&amp;gt;1 # if multiple attempts are allowed&lt;br /&gt;
&lt;br /&gt;
==Phase 2==&lt;br /&gt;
* Some discussion is taking place [http://moodle.org/mod/forum/discuss.php?d=129267 here].&lt;br /&gt;
===Scenarios===&lt;br /&gt;
* Susie Sunglasses will return to Town High School for her senior year. During the last week of school in her junior year, she sits down in the computer lab and enrolls herself in each of the 5 courses she wishes to take during the fall semester. Moodle sends information about these enrollments to SchoolTool, and when THS principal Patricia Participle logs in to SchoolTool in July she is able to see which courses Susie will be taking in the fall.&lt;br /&gt;
 [https://docs.moodle.org/en/images_en/d/d1/Susie-and-patricia.dia Susie-and-patricia.dia source file]&lt;br /&gt;
 [[Image:Susie-and-patricia.png|300px]]&lt;br /&gt;
* Tommy Trackstar is a new student at Town High School. He consults immediately with guidance counselor Guinevere, who logs into Moodle and enrolls him in all his chosen courses. As Tommy completes his work and grades are given (some automatically and some manually by the teacher) in Moodle, each grade is also transferred to SchoolTool, which is thereby able to generate an up-to-date progress report for Tommy at any desired point in time (past or present).&lt;br /&gt;
* Track season comes around, and Tommy gets too busy with practice. After careful consideration of all his available options, Tommy decides to drop Mathematics of Whistling to have an extra hour to run each day. Either he or guidance counselor Guinevere unenrolls him in Moodle from Mathematics of Whistling. The unenrollment is transferred directly to SchoolTool, and Guinevere is able to enter a note and a withdrawal code to explain what happened. This withdrawal is then included on Tommy&#039;s transcript.&lt;br /&gt;
* Samantha Stupenda, widely rumored to be the most demanding science teacher at THS, has developed assignments for the newest chapter of the textbook she&#039;s writing (&amp;quot;Earth Science Internalized: No Escape&amp;quot;). Samantha adds each of these assignments to her course in Moodle. As she adds each assignment, it is transferred to SchoolTool as a grade item for the section, and SchoolTool will be prepared to accept grade data for each student enrolled in Samantha&#039;s course.&lt;br /&gt;
* Vera Vestibule is taking Bubble Blowing 101, which has no Moodle component at all. Guidance counselor Guinevere logs into SchoolTool and 1) creates a course (&amp;quot;Bubble Blowing 101&amp;quot;), 2) creates a section of the course (&amp;quot;Bubble Blowing 101 taught by Chewie Chomper&amp;quot;), and 3) enrolls Vera in the section. Chewie uploads in SchoolTool a spreadsheet specifying the gradeable assignments in the course. As his students complete the assignments, Chewie enters their grades in SchoolTool, which is then able to include this course and these grades in student progress reports and transcripts.&lt;br /&gt;
* Country Mouse High School has been using Moodle for the past 3 years, and many but not all of the teachers have enthusiastically created Moodle courses that they use extensively in their classrooms. However, some teachers do not have a Moodle presence at all. The principal of CMHS, Betsy Balustrade, keeps a collection of spreadsheets and other documents which she uses to plan and manage the class schedule each year. The technology director of CMHS, Cathy Colever, decides to adopt SchoolTool as the Student Information System (SIS) of CMHS. She installs SchoolTool and integrates it with their existing Moodle, and all the information in Moodle about the teachers, students, courses, enrollments, and grades is transferred to SchoolTool. Cathy provides a series of training sessions for Betsy and her administrative assistant Astra Lodge. Since not every course in the school is in Moodle, Astra enters information about some courses, teachers, and student enrollments into SchoolTool manually. After that, Betsy is able to use SchoolTool to create the schedule for each upcoming semester.&lt;br /&gt;
* Samantha Stupenda also teaches Chemistry. All her class assignments are graded in Moodle, and those grades transfer automatically to SchoolTool. But her lab assignments are not in Moodle, and Samantha creates grade items and enters those grades manually into her Chemistry sections in SchoolTool. Halfway through the school year, Samantha decides to represent those lab assignments in Moodle, and she is careful to use *exactly* the same names that she entered into SchoolTool previously. What happens?&lt;br /&gt;
&lt;br /&gt;
===Flowcharts Because We Like Them===&lt;br /&gt;
* address each of the above scenarios...&lt;br /&gt;
* show technical detail for transfer of user account(s) from Moodle to SchoolTool&lt;br /&gt;
[[Image:SchoolTool_Integration_Userdata.png|200px]]&lt;br /&gt;
* show technical detail for transfer of enrollment(s) from Moodle to SchoolTool&lt;br /&gt;
* show technical detail for transfer of grades(s) from Moodle to SchoolTool&lt;br /&gt;
&lt;br /&gt;
===Part 1: SSO===&lt;br /&gt;
====Tasks====&lt;br /&gt;
* Make Moodle aware of SchoolTool as a potential SSO peer&lt;br /&gt;
* Implement Moodle cron job to ensure all users are always maintained in SchoolTool&lt;br /&gt;
** UI: gracefully add this to existing Mnet SSO config screen if possible&lt;br /&gt;
* Implement SchoolTool SSO interfaces&lt;br /&gt;
** new_user() Mnet interface&lt;br /&gt;
** update_user() Mnet interface&lt;br /&gt;
** UI: link to configured Moodle peers&lt;br /&gt;
** UI: link back to Moodle after Moodle-&amp;gt;SchoolTool SSO login&lt;br /&gt;
** UI: Mnet SSO configuration&lt;br /&gt;
===Part 2: Enrollments===&lt;br /&gt;
====Tasks====&lt;br /&gt;
===Part 3: Grades===&lt;br /&gt;
====Tasks====&lt;br /&gt;
&lt;br /&gt;
==Misc. TODO==&lt;br /&gt;
* Matt/Tom: Find out what reports ECHS will want from SchoolTool&lt;br /&gt;
&lt;br /&gt;
* SchoolTool TODO list&lt;br /&gt;
** Create an &amp;quot;ongoing section&amp;quot; container that will contain (otherwise normal) sections that do not fit into the year/term schema.&lt;br /&gt;
*** integration v1.0 will place all Moodle-driven sections in the &amp;quot;ongoing&amp;quot; container&lt;br /&gt;
** Add enumerated status field to enrollment (e.g., Active, Withdrawn No Grade, Withdrawn Failing, Passed) This will not initially include a workflow, but simply a current state and a history of states.&lt;br /&gt;
** Add support for section history&lt;br /&gt;
*** grading history&lt;br /&gt;
*** enrollment history (including all enrollment status changes)&lt;br /&gt;
*** teacher history&lt;/div&gt;</summary>
		<author><name>Moquist</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/32/en/index.php?title=File:Susie-and-patricia.png&amp;diff=61589</id>
		<title>File:Susie-and-patricia.png</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/32/en/index.php?title=File:Susie-and-patricia.png&amp;diff=61589"/>
		<updated>2009-08-15T00:51:21Z</updated>

		<summary type="html">&lt;p&gt;Moquist: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Moquist</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/32/en/index.php?title=Development:SchoolTool_Integration&amp;diff=61588</id>
		<title>Development:SchoolTool Integration</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/32/en/index.php?title=Development:SchoolTool_Integration&amp;diff=61588"/>
		<updated>2009-08-15T00:50:59Z</updated>

		<summary type="html">&lt;p&gt;Moquist: /* Scenarios */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [http://schooltool.org SchoolTool] SIS project recently released version 1.0, and lots of people could benefit from a solid integration between Moodle and SchoolTool. This page is a work-in-progress specification for the first version of this integration.&lt;br /&gt;
&lt;br /&gt;
==Goal: Moodle-SchoolTool integration modeled on Moodle-Mahara integration.==&lt;br /&gt;
* SchoolTool-Mahara integration should require very little extra effort when this project is complete.&lt;br /&gt;
* SchoolTool+Moodle+Mahara will provide a complete, integrated school administration/learning/portfolio suite that will be easily installable and supportable by time-crunched education systems administrators.&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
* Completely web-based integration configuration (similar to Moodle-Mahara configuration)&lt;br /&gt;
* SSO between SchoolTool and Moodle&lt;br /&gt;
* User accounts, courses, enrolments, assignments, and grades auto-update in SchoolTool&lt;br /&gt;
* Automatic grade transfer from Moodle to SchoolTool&lt;br /&gt;
&lt;br /&gt;
==Integration v1.0 NON-Requirements==&lt;br /&gt;
* Users, courses, enrolments can originate in and be managed within SchoolTool, with Moodle updating from SchoolTool.&lt;br /&gt;
** This will be the goal of the next version of the integration.&lt;br /&gt;
&lt;br /&gt;
==Assumptions==&lt;br /&gt;
* SchoolTool is the authoritative reporting application.&lt;br /&gt;
* Moodle drives all data creation and management.&lt;br /&gt;
&lt;br /&gt;
==Supported versions==&lt;br /&gt;
* SchoolTool 1.0&lt;br /&gt;
* Moodle 1.9.5+&lt;br /&gt;
&lt;br /&gt;
==Terminology Disambiguation==&lt;br /&gt;
* course: A SchoolTool course.&lt;br /&gt;
** SchoolTool &amp;quot;course&amp;quot; has no Moodle analogue. (&amp;quot;Algebra 1&amp;quot;) can have multiple &amp;quot;sections&amp;quot; (&amp;quot;Algebra * 1 @ 9:15 taught by Mr. Smith&amp;quot;).&lt;br /&gt;
* section: A SchoolTool section, a Moodle course.&lt;br /&gt;
&lt;br /&gt;
==Background info and references==&lt;br /&gt;
* [https://docs.moodle.org/en/Grades Moodle 1.9+ gradebook]&lt;br /&gt;
* [https://docs.moodle.org/en/External_database Moodle external DB enrolment plugin ]&lt;br /&gt;
&lt;br /&gt;
==Implementation notes/ideas==&lt;br /&gt;
* The [http://git.catalyst.net.nz/mnet.git/ PHP mnet library] has been [https://code.edge.launchpad.net/~mnet-maintainers/mnet-wsgi/main ported to python.]&lt;br /&gt;
** SchoolTool will need to use this library.&lt;br /&gt;
* Moodle will need some awareness of SchoolTool in the mnet auth plugin. Not sure yet what this entails. (i.e., Mahara shows up in the list. We need SchoolTool in there, too.)&lt;br /&gt;
* Moodle will need an enrolment plugin that gets data from mnet but is otherwise modeled on the external DB enrolment plugin.&lt;br /&gt;
* Moodle will need a gradebook plugin that can pass grades to SchoolTool via mnet.&lt;br /&gt;
* integration v1.0 will not batch updates from Moodle to SchoolTool. Updates will be small and frequent.&lt;br /&gt;
&lt;br /&gt;
==Use Cases==&lt;br /&gt;
* integration v1.0: Drop SchoolTool into existing Moodle site, leave Moodle as driver of user directory and enrollment management.&lt;br /&gt;
** Accounts manually created in SchoolTool may or may not be integratable with Moodle. (Matt recommends this as a feature, but it should not be required for v1.0.)&lt;br /&gt;
** All course creation and enrollment updates must happen first in Moodle and be transferred from there to SchoolTool.&lt;br /&gt;
** Enrollment can be student-driven.&lt;br /&gt;
** An interactive enrollment in Moodle kicks off an immediate transaction to record the enrollment in schooltool.&lt;br /&gt;
* future integration version only: Drop SchoolTool into existing Moodle site, after bulk data transfer from Moodle-&amp;gt;SchoolTool, flip configuration and use SchoolTool as the authoritative user directory and/or enrollment management system.&lt;br /&gt;
** Could this be used to migrate to SchoolTool from another SIS (integrated somehow with Moodle) by way of Moodle?&lt;br /&gt;
* Start fresh with both.&lt;br /&gt;
* future integration version only: Drop Moodle into SchoolTool site.&lt;br /&gt;
** maybe not important for v1.0, might basically come for free&lt;br /&gt;
* future integration version only: Drop SchoolTool into Mahara site (and vice-versa)&lt;br /&gt;
&#039;&#039;&#039;In summary, integration v1.0 will be a Moodle-&amp;gt;SchoolTool integration. We are laying a foundation for a future bidirectional integration in which sections are created and teachers and enrollments are managed in SchoolTool, while Moodle regularly reports grades back to SchoolTool.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==User Interfaces==&lt;br /&gt;
* The integration configuration interfaces will be modeled on the existing interfaces for integrating Moodle and Mahara. See this document for a characterization of the type of admin user experience we want: [http://eduforge.org/docman/view.php/176/3200/Mahoodle.pdf Mahoodle.pdf]&lt;br /&gt;
* Moodle UIs&lt;br /&gt;
** Auth plugin config&lt;br /&gt;
** Enrolment plugin config&lt;br /&gt;
** Grade export config&lt;br /&gt;
* SchoolTool UIs&lt;br /&gt;
** similar division of config screens&lt;br /&gt;
** equivalent of Moodle&#039;s &amp;quot;Network Servers&amp;quot; block with links to SSO peers&lt;br /&gt;
** equivalent of &amp;quot;You have logged in from &amp;lt;somelink&amp;gt;&amp;quot; to go back after SSO&lt;br /&gt;
&lt;br /&gt;
==Mnet==&lt;br /&gt;
* What, in summary, does MNET provide?&lt;br /&gt;
** MNET is an XMLRPC implementation that dispatches messages to applications on either side (with a convention for function naming).&lt;br /&gt;
** MNET has a security layer that enforces that every message is encrypted and signed (with regular key rotation).&lt;br /&gt;
** MNET provides a core set of modules to provide common functionality such as SSO, key discovery, ping, and course enrollment.&lt;br /&gt;
&lt;br /&gt;
===Moodle mnet Interfaces===&lt;br /&gt;
* existing: SSO IDP interfaces&lt;br /&gt;
** in integration v1.0, SchoolTool will only be a Service Provider and Moodle will always be the IDentity Provider&lt;br /&gt;
** returns user data sufficient to create account&lt;br /&gt;
* list_user_enrolments(user)&lt;br /&gt;
** returns a list of all enrolments for a given user&lt;br /&gt;
** SchoolTool may call this to get enrolment data ASAP when an unknown user authenticates and an account is created using user_authorise()&lt;br /&gt;
&lt;br /&gt;
===SchoolTool mnet Interfaces===&lt;br /&gt;
* fetch_user(userdata)&lt;br /&gt;
** tell SchoolTool to ask Moodle for one user&#039;s data&lt;br /&gt;
** userdata: associative array such as:&lt;br /&gt;
*** username=&amp;gt;moquist&lt;br /&gt;
*** firstname=&amp;gt;Matt&lt;br /&gt;
*** lastname=&amp;gt;Oquist&lt;br /&gt;
*** idnumber=&amp;gt;1234457 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** email=&amp;gt;moquist@majen.net&lt;br /&gt;
*** password_hash=&amp;gt;234lih23rlh2asldfjas&lt;br /&gt;
*** password_hash_algorithm=&amp;gt;md5&lt;br /&gt;
*** ircnick=&amp;gt;moquist&lt;br /&gt;
*** arbitrary_field=&amp;gt;arbitrary_data_string...&lt;br /&gt;
**** SchoolTool only cares about enough to create a login account.&lt;br /&gt;
**** SchoolTool does not care about student-editable profile fields.&lt;br /&gt;
* new_section(sectiondata)&lt;br /&gt;
** sectiondata: associative array such as:&lt;br /&gt;
*** name=&amp;gt;&amp;quot;Algebra 1 V1 Mrs. Smith: Cats and their Affectations&amp;quot;&lt;br /&gt;
*** idnumber=&amp;gt;197423 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** teacheridnumber=&amp;gt;987234 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** segment=&amp;gt;1 # a section may have more than one semester/segment/term(?)&lt;br /&gt;
* new_enrolment(enrolmentdata)&lt;br /&gt;
** create new association between user &amp;amp; section&lt;br /&gt;
** enrolmentdata: associative array such as:&lt;br /&gt;
*** sectionid=&amp;gt;197423 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** userid=&amp;gt;987234 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** role=&amp;gt;&#039;teacher&#039; # only &#039;student&#039; and &#039;teacher&#039; supported in integration v1.0&lt;br /&gt;
* new_assessment(assessmentdata)&lt;br /&gt;
** create new assessment to be displayed in grade reports&lt;br /&gt;
** assessmentdata: associative array such as:&lt;br /&gt;
*** sectionid=&amp;gt;197423 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** name=&amp;gt;&amp;quot;How to grill a logarithmic sandwich&amp;quot;&lt;br /&gt;
*** idnumber=&amp;gt;73743734 # unique ID shared by Moodle &amp;amp; SchoolTool&lt;br /&gt;
*** chapternum=&amp;gt;3&lt;br /&gt;
*** honors_required=&amp;gt;false&lt;br /&gt;
*** nonhonors_required=&amp;gt;true&lt;br /&gt;
*** extra_credit=&amp;gt;false&lt;br /&gt;
*** pointval=&amp;gt;68&lt;br /&gt;
* new_grade(gradedata)&lt;br /&gt;
** make entry in gradebook&lt;br /&gt;
** gradedata: associative array such as:&lt;br /&gt;
*** assessmentid=&amp;gt;73743734&lt;br /&gt;
*** userid=&amp;gt;2347234 # unique shared ID of student&lt;br /&gt;
*** points_earned=&amp;gt;62&lt;br /&gt;
*** excepted=&amp;gt;false&lt;br /&gt;
*** attempt_num=&amp;gt;1 # if multiple attempts are allowed&lt;br /&gt;
&lt;br /&gt;
==Phase 2==&lt;br /&gt;
* Some discussion is taking place [http://moodle.org/mod/forum/discuss.php?d=129267 here].&lt;br /&gt;
===Scenarios===&lt;br /&gt;
* Susie Sunglasses will return to Town High School for her senior year. During the last week of school in her junior year, she sits down in the computer lab and enrolls herself in each of the 5 courses she wishes to take during the fall semester. Moodle sends information about these enrollments to SchoolTool, and when THS principal Patricia Participle logs in to SchoolTool in July she is able to see which courses Susie will be taking in the fall.&lt;br /&gt;
 [https://docs.moodle.org/en/images_en/d/d1/Susie-and-patricia.dia Susie-and-patricia.dia source file]&lt;br /&gt;
* Tommy Trackstar is a new student at Town High School. He consults immediately with guidance counselor Guinevere, who logs into Moodle and enrolls him in all his chosen courses. As Tommy completes his work and grades are given (some automatically and some manually by the teacher) in Moodle, each grade is also transferred to SchoolTool, which is thereby able to generate an up-to-date progress report for Tommy at any desired point in time (past or present).&lt;br /&gt;
* Track season comes around, and Tommy gets too busy with practice. After careful consideration of all his available options, Tommy decides to drop Mathematics of Whistling to have an extra hour to run each day. Either he or guidance counselor Guinevere unenrolls him in Moodle from Mathematics of Whistling. The unenrollment is transferred directly to SchoolTool, and Guinevere is able to enter a note and a withdrawal code to explain what happened. This withdrawal is then included on Tommy&#039;s transcript.&lt;br /&gt;
* Samantha Stupenda, widely rumored to be the most demanding science teacher at THS, has developed assignments for the newest chapter of the textbook she&#039;s writing (&amp;quot;Earth Science Internalized: No Escape&amp;quot;). Samantha adds each of these assignments to her course in Moodle. As she adds each assignment, it is transferred to SchoolTool as a grade item for the section, and SchoolTool will be prepared to accept grade data for each student enrolled in Samantha&#039;s course.&lt;br /&gt;
* Vera Vestibule is taking Bubble Blowing 101, which has no Moodle component at all. Guidance counselor Guinevere logs into SchoolTool and 1) creates a course (&amp;quot;Bubble Blowing 101&amp;quot;), 2) creates a section of the course (&amp;quot;Bubble Blowing 101 taught by Chewie Chomper&amp;quot;), and 3) enrolls Vera in the section. Chewie uploads in SchoolTool a spreadsheet specifying the gradeable assignments in the course. As his students complete the assignments, Chewie enters their grades in SchoolTool, which is then able to include this course and these grades in student progress reports and transcripts.&lt;br /&gt;
* Country Mouse High School has been using Moodle for the past 3 years, and many but not all of the teachers have enthusiastically created Moodle courses that they use extensively in their classrooms. However, some teachers do not have a Moodle presence at all. The principal of CMHS, Betsy Balustrade, keeps a collection of spreadsheets and other documents which she uses to plan and manage the class schedule each year. The technology director of CMHS, Cathy Colever, decides to adopt SchoolTool as the Student Information System (SIS) of CMHS. She installs SchoolTool and integrates it with their existing Moodle, and all the information in Moodle about the teachers, students, courses, enrollments, and grades is transferred to SchoolTool. Cathy provides a series of training sessions for Betsy and her administrative assistant Astra Lodge. Since not every course in the school is in Moodle, Astra enters information about some courses, teachers, and student enrollments into SchoolTool manually. After that, Betsy is able to use SchoolTool to create the schedule for each upcoming semester.&lt;br /&gt;
* Samantha Stupenda also teaches Chemistry. All her class assignments are graded in Moodle, and those grades transfer automatically to SchoolTool. But her lab assignments are not in Moodle, and Samantha creates grade items and enters those grades manually into her Chemistry sections in SchoolTool. Halfway through the school year, Samantha decides to represent those lab assignments in Moodle, and she is careful to use *exactly* the same names that she entered into SchoolTool previously. What happens?&lt;br /&gt;
&lt;br /&gt;
===Flowcharts Because We Like Them===&lt;br /&gt;
* address each of the above scenarios...&lt;br /&gt;
* show technical detail for transfer of user account(s) from Moodle to SchoolTool&lt;br /&gt;
[[Image:SchoolTool_Integration_Userdata.png|200px]]&lt;br /&gt;
* show technical detail for transfer of enrollment(s) from Moodle to SchoolTool&lt;br /&gt;
* show technical detail for transfer of grades(s) from Moodle to SchoolTool&lt;br /&gt;
&lt;br /&gt;
===Part 1: SSO===&lt;br /&gt;
====Tasks====&lt;br /&gt;
* Make Moodle aware of SchoolTool as a potential SSO peer&lt;br /&gt;
* Implement Moodle cron job to ensure all users are always maintained in SchoolTool&lt;br /&gt;
** UI: gracefully add this to existing Mnet SSO config screen if possible&lt;br /&gt;
* Implement SchoolTool SSO interfaces&lt;br /&gt;
** new_user() Mnet interface&lt;br /&gt;
** update_user() Mnet interface&lt;br /&gt;
** UI: link to configured Moodle peers&lt;br /&gt;
** UI: link back to Moodle after Moodle-&amp;gt;SchoolTool SSO login&lt;br /&gt;
** UI: Mnet SSO configuration&lt;br /&gt;
===Part 2: Enrollments===&lt;br /&gt;
====Tasks====&lt;br /&gt;
===Part 3: Grades===&lt;br /&gt;
====Tasks====&lt;br /&gt;
&lt;br /&gt;
==Misc. TODO==&lt;br /&gt;
* Matt/Tom: Find out what reports ECHS will want from SchoolTool&lt;br /&gt;
&lt;br /&gt;
* SchoolTool TODO list&lt;br /&gt;
** Create an &amp;quot;ongoing section&amp;quot; container that will contain (otherwise normal) sections that do not fit into the year/term schema.&lt;br /&gt;
*** integration v1.0 will place all Moodle-driven sections in the &amp;quot;ongoing&amp;quot; container&lt;br /&gt;
** Add enumerated status field to enrollment (e.g., Active, Withdrawn No Grade, Withdrawn Failing, Passed) This will not initially include a workflow, but simply a current state and a history of states.&lt;br /&gt;
** Add support for section history&lt;br /&gt;
*** grading history&lt;br /&gt;
*** enrollment history (including all enrollment status changes)&lt;br /&gt;
*** teacher history&lt;/div&gt;</summary>
		<author><name>Moquist</name></author>
	</entry>
</feed>