Skip to main content

How to Sync Students to Hapara Teacher Dashboard from Capita SIMS MIS

As a long time user of Hapara Teacher Dashboard, I thought I should document how you can update classes on a daily basis from Captia SIMS - the most common MIS in the UK and the one we use.

Step 1 - Generate a suitable students report (same one I use for syncing Google Classroom - see another blog post...)
Step 2 - Set this report to run on a schedule and output to a network share on a Virtual machine that is online all the time. You do this with the "commandreporter" on your SIMS server. An example command that lives in a batch file that runs as a scheduled task (the username and password is a SIMS user with sufficient privileges to run the report):

"C:\Program Files\SIMS\SIMS .net\commandreporter" /user:USERNAME /password:PASSWORD /report:"haparastudents" /OUTPUT:\\Win10man\gam\hapara\hapara.csv /QUIET

Step 3 - Write a script to reformat the csv file to an acceptable Hapara format. So key things:

Convert "/"'s into "-" as you cannot have "/"'s in group names.
Remove "CLS " in tutor groups.
Remove any funny classes you don't want.

The way I do this is to call a sequence of vbs scripts in one main batch file, create some tempory files and then delete the temp files. To replace a certain string with another the basic script is:

Set objFS = CreateObject("Scripting.FileSystemObject")
strFile = "c:\GAM\hapara\hapara.csv"
Set objFile = objFS.OpenTextFile(strFile)
Do Until objFile.AtEndOfStream
    strLine = objFile.ReadLine
    If InStr(strLine,"/")> 0 Then
        strLine = Replace(strLine,"/","-")
    End If 
    WScript.Echo strLine
Loop   

This one replaces all the "/"'s with "-"'s.

We have a load of classes that have an ":" in the name and are timetable items for individual students so don't need a class creating. I remove them using the following command:

findstr /v ":" students4 > students.csv

The whole lot can be put into one batch script and run as a scheduled task.

cscript /nologo myreplace.vbs  > students
cscript /nologo myreplace2.vbs  > students1
cscript /nologo myreplace3.vbs  > students2
cscript /nologo myreplace4.vbs  > students3 
cscript /nologo myreplace5.vbs  > students4
del students.csv
findstr /v ":" students4 > students.csv
del students
del students1
del students2
del students3
del students4
curl -F "passkey=YOURDOMAINKEY" -F "uploadFile=@C:\GAM\hapara\students.csv" https://td-setup.appspot.com/YOURDOMAIN/csvupload


The five vbs scripts at the start replace one string with another. The all the classes with ":" are removed. Then the temporary files are removed. The final command uploads the file to Teacher Dashboard using Curl. Curl is an open source tool to upload data to external sites via https. Hapara provides the domainkey for you.

That's it. Once setup, this will run on whatever schedule you set until you stop it. I sync students every day now. My next blog post will describe how you can sync SIMS to Google Classroom using scheduled SIMS reports and the GAM commandline tool.

Comments

Popular posts from this blog

My favorite GAM commands - well a few of them at least!

Where would be without GAM? Paying for expensive syncing tools or doing tedious manual tasks in the admin console. GAM can automate most things you might want to do in G Suite. So these are a few of my favourite commands - one I use either as part of a batch file - or just standalone. There are loads more - but these are ones that are used daily. Classroom Create a spreadsheet of all your domains classes -  gam print courses todrive Create a spreadsheet of a teacher's classes:  gam print courses teacher fred@mydomain.com todrive Bulk create classes: gam csv classes.csv gam create course alias ~alias name ~alias section ~subject teacher ~teacher status ACTIVE where classes.csv is a list of classes you want to make. Add teachers: gam csv teachers.csv gam course ~alias add teacher ~teacher Add students: gam csv students.csv gam course ~alias add teacher ~student Sync Students (in this example to a group - but could be an ou/csv file) gam csv groups.csv gam course ~g

Delete a specific email using GAM

If a user send an inappropriate email to a loads of people or get stung by some sort of email exploit you can quickly delete the email from all of the recipients using a GAM command. Step 1 - get the email header Go into Google Vault and search for the offending user or someone known to have got the message. Click show details and grab the email ID. This will be a long string of characters followed by @mail.gmail.com Step 2 - find out who has the email Go into Google Vault and find the original message sent by the offending user. Look at the details to see who got it. Copy the list and dump it into a spreadsheet. Clean up to just a list of emails with a column header 'mail'. Save as a csv file. Step 3 - delete messages with GAM Put your CSV file in your GAM folder - this e.g. assumes its called mail.csv Run: gam csv mail.csv gam user ~mail delete messages query rfc822msgid: MESSAGEIDHERE doit The alternative nuke option is: gam all users delete messages query rf

How to provision Google Classroom using GAM and sync to Capita SIMS

This is a guide (or documentation for my own use!) to the provisioning of Google Classrooms across a large domain and how to achieve ongoing sync of student members. The advantages of doing this are: Teachers don't have to do anything - all their classes are just there. You can add multiple teachers to classrooms. No inviting a secondary teacher. Students have all their classes at the start of the term. Students are automatically in the correct classes. Classes have totally consistent names. You can do it for FREE - however, there are paid for options if you don't want to go the DIY approach. The following requires you to have the student, staff and optionally, guardian emails on SIMS. Step 1 - Setup up GAM - you need this to do command line processing on your domain. It's a very powerful tool to do batch commands. Step 2 - Export a list of current Classrooms and archive any you don't want. I'd recommend this as it means users will only see the ones