Back Door Restore

Humans make mistakes. Our clients’ administrators some times do very bad things without malicious intent. The “Deny Access” button is too close to the “Delete” one. About 160 student accounts were deleted.

The hypothesis came to me that sections keep data when a student is removed. Maybe it keeps the data when a student’s account is deleted. If I can trick the system into thinking the same student came back, then maybe it will relink the data. Everyone is happy.

To test this hypothesis, I…

  • Exported a copy of the grade book for my test student account in a test CE/Vista 8.0.6 system. Should the test go bad, then I could at least restore the grades.
  • Copied the account’s profile to a text file for the user name, sourcedid.source, and sourcedid.id.
  • Created a new account, gave it  the same user name, sourcedid.source, and sourcedid.id (and first, last, password).
  • Enrolled the account into the original class as a student.

The grades were missing. Clearly my hypothesis was wrong. Data is not kept around for deleted students like it for unenrolled students. Which sucks.

In my retest, I…

  • Unrolled the same account. The grade book showed the student’s data in red, meaning the account was unenrolled but the data still there.
  • Deleted the same account. The grade book still showed the student’s data in red.
  • Created a new account with a 2 in the user name and added it to the section. The grade book showed the new account not the one I deleted.

I hope this means I still saw the data post-delete because of the cache services. Changing the enrollment changed what was stored in the cache so the old account disappeared at that point. A couple more tries confirms the behavior of the student appearing in the grade book post-delete.

Still disconcerting deleted users appear in the grade book.

xmllint

This Linux tool is my new best friend. We get thousands of XML files from our clients for loading user, class, and enrollment information. Some of these clients customize our software or write their own software for generating the XML.

This means we frequently get oddities in the files which cause problems. Thankfully I am not the person who has to verify these files are good. I just get to answer the questions that person has about why a particular file failed to load.

The CE/Vista import process will stop if its validator finds invalid XML. Unfortunately, the error “An exception occurred while obtaining error messages.  See webct.log” doesn’t sound like invalid XML.

Usage is pretty simple:

xmllint –valid /path/to/file.xml | head

  1. If the file is valid, then the whole file is in the output.
  2. If there are warnings, then they precede the whole file.
  3. If there are errors, then only the errors are displayed.

I use head here because our files can be up to 15MB, so this prevents the whole file from going on the screen for the first two situations.

I discovered this in researching how to handle the first situation below. It came up again today. So this has been useful to catch errors in the client supplied files where the file failed to load.

1: parser error : XML declaration allowed only at the start of the document
 <?xml version=”1.0″ encoding=”UTF-8″?>

162: parser error : EntityRef: expecting ‘;’
<long>College of Engineering &amp&#059; CIS</long>

(Bolded the errors.) The number before the colon is the line number. The carat it uses to indicate where on the line an error occurred isn’t accurate, so I ignore it.

My hope is to get this integrated into our processes to validate these files before they are loaded and save ourselves headaches the next morning.

Too Hot Out There

When I saw online school enrollment soars in summer in the Atlanta Journal Constitution, I thought Duh! Our traffic this summer is way up. Normal enrollment pattern is Fall term peak, 90-95% of Fall term in Spring,  60% of Fall term in Summer. By contrast, our online system usage until 2008-2009 had a Spring term peak. The 2008-2009 school year showed a pattern consistent with the normal enrollment pattern in the Spring without as much drop off as expected in the Summer.

We run a higher education online learning system. The article was talking about K-12. Maybe for the similar reasons our usage is way up as well?