Wednesday, December 16, 2015

SSL

So, I'm going to have to host my LMS Reports app locally on my home machine.
I have the webserver running IIS7, but I want both SSL and a trusted cert. So.
I've already registered my domain name (orcuttg.com) with GoDaddy

1. Setup SSL
SSL (https) runs on port 443. In IIS, for the reports website, choose "bindings"
Add https/ssl

TEST:
Now, if I go to https://www.orcuttg.com/default.aspx I get an encrypted connection, with no cert verification

2. Setup cert
I got my cert from rapidssl.com because it's cheap.
First, I need to start the server certificate request process. Go to IIS, and click Server Certificates.
PROBLEM: It may be the case that this option does not exist in IIS. In that case, go to start, run, and type MMC. Then File, Add/Remove Snap In, and add Certificates.
You may have to do this as administrator.
Now if you restart IIS you should have the server certificates option.

Second, open Server Certificates, and Create Certificate Request.
Common Name is www.orcuttg.com
All else is organization name, etc.
It will end with you saving a text file with your part of the shared certificate. Save it to you hard drive.

Third, back at the rapidssl site, it will ask you to upload the text from this file.

Fourth, you will be sent a confirmation email, and if you approve RapidSSL will send you their part of the cert. Save it as server.cer.
Copy ONLY the first block, not the intermediate certs.

Fifth, go back to IIS, and in server certificates click "Complete certificate request"
You will upload the server.cer file and give it the friendly name of your domain.

Lastly, associate the https binding with the certificate. Back at the settings for the IIS website, under bindings, the https, click Edit, and associate your certificate with this website.

Now you should have an https site that gives no errors to the end user.

Tuesday, May 12, 2015

Crystal Reports Show Value in Bar Chart

How to show a value in a bar chart in Crystal Reports, not a count.

The data source looks like this:
TermID Count Of Events

589
2148 402
2151 8238
2152 542
ldap_orgs 3
ms_rtr 6

By default, in Crystal Reports the report comes out looking like this.

We want it to look like this:
The solution:
1. Right click on the report. Choose report, formula workshop
2. Choose Formula Fields, and the add new button. Name the formula "ValueNum"
3. For ValueNum, assign the value "tonumber({Subreport.CountOfUserID})"
4. Save and close
5. Go back to Chart Expert, and on the Data tab, show value(s), add the new field "ValueNum", and check Don't Summarize.
The report will display as you wanted it to.

d

Tuesday, May 5, 2015

C-sharp console reports application

Description:
A C# console (needs no human intervention) application to do the following:
1. Order three reports from the Canvas LMS via Restful API. Wait for them to generate.
2. Download the three reports as CSV files.
3. Connect to the CSV as if it were a three-table database, and run a query to generate a single data-table for the final report:
select distinct table1.canvas_course_id,  table1.short_name,  table1.long_name,  table1.term_id
from (SELECT provisioning.canvas_course_id, provisioning.short_name, provisioning.long_name, provisioning.term_id, unused.[short name] FROM [provisioning.csv] as provisioning LEFT JOIN [unused.csv] as unused on unused.[short name] = provisioning.short_name where unused.[short name] is null) AS table1,
(SELECT provisioning.canvas_course_id, provisioning.short_name, provisioning.long_name, provisioning.term_id, unpub.[short name] FROM [provisioning.csv] as provisioning LEFT JOIN [unpublished.csv] as unpub on unpub.[short name] = provisioning.short_name where unpub.[short name] is null) AS table2
where table1.short_name = table2.short_name order by table1.short_name;

The query is left-joined, to capture rows in table 1 (provisioning.csv) that do NOT have corresponding rows in the other two tables (unpublished.csv, unused.csv)
4. Connect the above datatable to a CrystalReports .rpt object to generate a human-readable report in PDF format
5. Upload the PDF to a course in the LMS made to hold these weekly reports. The upload is to an AWS server, using the Amazon API.
6. Delete the csv and pdf files.

The source code is visible here (permission may be required). View an instance of this report (publicly visible)

The compiled application will run from any windows machine; I'm running it weekly via the Win7 Task Scheduler.

Monday, April 6, 2015

Canvas List All Available Reports via API

Using Postman (see earlier in this blog)

GET
https://uth.instructure.com/api/v1/accounts/1/reports
HEADER:
Name: Authorization
Value: Bearer 1350~MF9c2npiG...(token)

This will give you all available reports, including (for those that have been run) url's where each can be downloaded.
See: https://canvas.instructure.com/doc/api/account_reports.html

Send token as header via ssl, not as a URL parameter. The latter works, but is much less secure.

Canvas API First attempt

Access the canvas API using Postman

This command will create a new user in Canvas using the API

1. Install Postman app in Chrome (https://chrome.google.com/webstore/category/apps, find Postman REST Client)

2. Generate access token in Canvas (Settings, Approved Integrations, New Access Token). Save the text-generated access token
3. In Postman, create the following POST request:

Some notes on this:
  • The URL has two parts: the API call ("https://uth.test.instructure.com/api/v1/accounts/self/users") and the access token, authorizing the API call ("?access_token=1350~pGr2UxliAgQocy...")
  • The URL API call format is documented at https://canvas.instructure.com/doc/api/users.html, in the section "Create a user"
  • The value after "accounts" can be either "self" (as above) or the numeric value of any account; it doesn't seem to matter. But it MUST be the value of an existing account; a random number here will not work.


20150406 Canvas Active Courses Count

run the following reports:
Provisioning (users, courses, sections, enrollments)
Unpublished Courses (All terms)
Unused Courses (All terms)

Tuesday, March 31, 2015

20150331 Lost content

Instructor inadvertently deleted all content; got panicked phone call.
Content is still on test server, which is always a few days old.
Documents were at:
https://uth.test.instructure.com/courses/9534/files#Clinical%20Seminar%20I%20%282151DHBS3202-100%29%2FCourse%20Content%2FPowerPoints
Option exists to download files in the folder as a zip.

Also, go to https://uth.test.instructure.com/courses/9534/content_exports and export course content. It creates a .imscc file but that's really a zip file. Download it, change the extension, and get the files and send them to the fat fingered instructor.

EvaluationKit install error

A Canvas subaccount administrator who should NOT have had permissions to install tools to other subaccounts, successfully but unintentionally installed EvaluationKit evaluation software to all account system-wide.
This has been reported to the vendor as a bug.

Remediation:
We will first re-attempt on test:
1. Confirm evalkit is not installed on uth.test (DONE, see email 3/30/15, 1:40 PM GEO) 
2. Get guidance from the vendor on how to install evalkit in ONE  subaccount only (DONE, see email March 30, 2015 2:31 PM Emin) 
3. After following those instructions, confirm that evalkit is only appearing in that subaccount. (DONE, see email Mon 3/30/2015 2:48 PM GEO) 
4. Document (that’s what we're doing this afternoon)

Production Remediation:
1. Remove system-wide installation
2. Confirm evalkit is absent from all subaccounts on on production
3. Follow documentation created above (step 4) to install correctly in production.

Documentation:
To install EvalKit in a subaccount:
1. Go to http://uth-tmc.evaluationkit.com, account, integration settings, LTI. Get Consumer Key, Shared Secret, and URL
2. Go to Canvas, subaccount, settings, apps, view app configurations, add app
3. Config type = manual
Paste consumer key, shared secret, url; name = EvaluationKit; privacy = public

4. Save. Tool will be available to that subaccount's courses only.

20150223 SAML Config for Canvas

Created SAML properties for all institutions at UT System for Canvas LMS
Spreadsheet is here.
Note that for creation of Certificate Fingerprint, it's generated by supplying X509Certificate value in UTfed-metadata.xml to this site.

Tuesday, February 24, 2015

20150224 Install TurnItIn on Canvas

Ben Cannon (Canvas tech rep) recommended Dan Buckley (dbuckley@midland.edu 432-686-4203) as a good guide on installation of TurnItIn on Canvas.

Dan recommends installing BOTH the default tool AND the LTI tool.

on uth.test.instructure.com,
install default tool first

  1. go to www.turnitin.com
  2. login gregory.orcutt@uth.tmc.edu + standard password
    record account id 97600
    click button under integrations
    click instructure canvas
    create a shared key (*******)
    leave ip address the same; leave error callback url the same.
    Do same with LTI Integration
  3. https://uth.instructure.com/accounts/50/settings
  4. apps, add app, turnitin
  5. consumer key = account id, shared secret = above

Install LTI tool (http://turnitin.com/en_us/integrations/instructure-canvas)

  1. Add values per the below.


















2. Submit

20150223 Respondus Install

Install Respondus in Blackboard and Canvas

Blackboard
1. Get the building block: www.respondus.com, username gregory.orcutt@uth.tmc.edu + password
2. Create new server profile; a download link will appear
bb-Respondus-LDB-BuildingBlock-3.3.3.war
3. Install Building Block (sysadmin tab, Building Blocks, installed tools, upload building blocks)
4. Config is set automatically
5. Restart server

Canvas
1. Login to Respondus: www.respondus.com, username gregory.orcutt@uth.tmc.edu + password
2. Create new server profile
3. After profile is created, "Download settings for External App configuration on Canvas server"
4. On Canvas, go to Settings, Apps, View App Configuration, Add App, and paste settings as defined above
5. Send the secure browser download URL (visible from the respondus.com website) to Instructure and ask them to turn on the LockDown Browser plugin
6. Test integration from the Respondus page, "Click here to test the integration"

Friday, February 20, 2015

20150220 Campus Pack Blogs in Canvas

HOWTO set up a Campus Pack Blog in Canvas
N.B.: Campus Pack Blogs MUST be set up as Assignments if they are going to work correctly.


1. As an instructor in a course, click Assignments, Add.


2. On the next page, select Add External Tool, give it a name, and maybe a due date and point value.


3. On the next page, click Publish to ensure the new blog is visible to students


4. Finally, MAKE A LINK to the blog so your students can see it.
What I did was put text on my home page, then highlight "Blog #2" with my mouse, then clicked the link to the blog under "Assignments"

.

20150220 Instructure Canvas Catalog

Sent email to Peggy Powell and Chris Harvey at SPH (2/20 10:00 am) in response to their inquiries about Canvas Catalog.

Peggy,

Instructure Canvas Catalog makes it easy to publish courses to the whole world, and allow users to sign up and even pay fees for their online courses

Their pricing model is:
An annual subscription fee, plus
An annual fee per outside user

We received a quote from Instructure for this service. Even though the fee per outside user was $4.65 per person per year, their annual subscription fee was $45,000 per year. This cost was considered prohibitive, given the expected use of this tool.

We are always happy to reconsider this if an argument can be made that this would be cost-effective.

Thanks

Greg

20150220 Canvas Update Scheduled for Saturday

On February 21, Canvas is updating their production application with new features.
This is a regularly scheduled update.

I have sent an email to the Steering Team advising them of these changes.

I attempted to add a university wide event to the calendar to show users about this, but such an event cannot be created in Canvas
https://help.instructure.com/entries/20609047-Add-Institution-level-Events-in-the-Calendar

20150220 Search Campus Solutions

Worked w Ronnie to create a page to display source data for enrollments.
URL is https://attestapps.uth.tmc.edu/lmstoolbox/pages/admin/searchenrollments.xhtml
(available only on campus or vpn)

Thursday, February 19, 2015

20150219 Canvas Logout Page

Problem
Because of cookies stored on the browser, users cannot reliably logout of Canvas.

Investigation
In Chrome, if the cookies in the red box are deleted, the user is effectively logged out of Canvas. ALL cookies containing the following url's must be deleted

  • instructure.com
  • uth.edu
  • uth.tmc.edu


Solution
Put a javascript on the logout page:
https://www.uth.edu/canvas/logout.htm

If this javascript deletes the browser cookies listed above, the user will be effectively logged out of Canvas.

2/19/15 4:16 pm sent this email to Rongrong Yu

Ronnie,

Jennifer cleared this idea, so far as web server administration goes.

We would like a java script that will live on the webpage at:
https://www.uth.edu/canvas/logout.htm

The java script will do one task, which is to delete cookies from the current browser containing the following in their url:
· instructure.com
· uth.edu
· uth.tmc.edu

If these are deleted successfully, the user will be effectively logged out of Canvas without closing their browser.
Closing their browser is ineffective sometimes (if the browser is holding on to cookies).

Can there be a success popup message on delete, and a fail popup message if unsuccessful (warning users to clear their cache)?
We will want BOTH, so the html page itself can say “If you didn’t get a popup message, your javascript is blocked. Please clear your cache to effectively logout of Canvas”

How do-able is this?

Greg

20150219 Canvas Google API

Problem:
Notification from Canvas that Google will deprecate the API Canvas uses by April 20, 2015

Solution:
Sent lms.advisory.team an email stating the following:
Just a notice to all of you helping manage our Canvas LMS.

Canvas can integrate with Google Docs. This will allow users to, for example, start collaboration projects using Google Docs

Google is phasing out their current interface that Canvas uses. Canvas knows about this, and will replace it with the new interface without anything from us.

BUT, just to make you aware, users MIGHT get an annoying error message from Google between now and April 20:
“Important notice: OAuth1 for Google accounts is going away on April 20, 2015. Learn more.”

This message can be safely ignored. It’s being taken care of.

Please let me know if you have any questions.

Greg

Wednesday, February 18, 2015

20150218 Canvas Knowledgebase


Began filling out Canvas Knowledgebase 


per email from Ben Cannon
From: Ben Cannon [mailto:benc@instructure.com]
Sent: Tuesday, February 17, 2015 5:20 PM
To: Lanier, Amy; Orcutt, Gregory
Subject: Tier 1

Hey Guys, 

As we continue to wait on the order form so we can start your tier 1, I wanted to get you the Knowledge Base for how you want us to support your end users.  We will go over this extensively in the Tier 1 kickoff call when we get that order form.


Ben Cannon | Customer Success Manager

20150218 Terms upload

Problem: Canvas has an incomplete terms list; courses are being fed into Canvas with no term to route them to.

Solution
In Canvas, uploaded terms per Robert Jenkins' email defining start and end dates for courses, through Summer 2019

  • MS and SOD dates (2148, 2149, etc) are approximations until further notice.
  • Dates are formatted as UTC so they change at midnight Houston time

terms.csv

************************************
Mark Jones has approved using these dates
From: Jones, Mark B
Sent: Wednesday, February 18, 2015 1:17 PM
To: Orcutt, Gregory
Subject: RE: Emailing: ISSR Term Data for Canvas.doc

Yes I approve.

Pragmatic - what you are doing will solve immediate problems and allow
everyone to continue to do business in the short term.

Idealistic - The ISSR I submitted to Teresa will allow us to receive
continually up-to-date, official term information directly from the source
and automate updates in Canvas so that future work is eliminated.

> -----Original Message-----
> From: Orcutt, Gregory
> Sent: Wednesday, February 18, 2015 12:34 PM
> To: Jones, Mark B
> Subject: RE: Emailing: ISSR Term Data for Canvas.doc
>
> Mark,
>
> We are already getting 2152 courses in the Canvas data feed and those
> courses have no term to go into.
>
> I am going to create terms in Canvas (attached csv) through 2192; MS and
> SOD terms are being created according to the rules Robert sent Fri
> 10/31/2014 9:54 AM
>
> Teresa Deis told you there is a Terms table that we will be able to use
> eventually. I will add this to my to do list.
> XrWuD4mU-VhqkekQQ/edit?usp=sharing
>
> Please reply back that you approve these additional Canvas terms. Thanks
>
> Thanks,

> Greg

Tuesday, February 10, 2015

20150210 Halpin weighted grades

From Richard Halpin 2/10 9:58a:
I have a faculty member who is currently testing Canvas and has concerns about how the weighted grades are coming out in the running total. She has calculated them manually and they are a couple of points different in all cases.

The course in question is 2151DHBS3202-100

We have number of exams collected into an assignment group and that group is worth 60%% of the total grade. Now they have taken one exam the faculty has calculated what the running total should be and it is not the same as what is displayed in Canvas.

This is causing some serious concerns for the faculty.

The strange thing is that come of the student grade seem similar to Canvas when calculated manually and others are over 1% away.

I have looked online and I can’t find any information about how Canvas calculates its running totals for weighted grades. I did find many long forum discussions about how poor people thing the Grade module is in Canvas and how they had similar concerns about its ability to calculate grades with accuracy.

I am hoping you know (or can reach out the Canvas and obtain) an explanation about how the grades are calculated here and why they may be different from the faculty calculation.

As an example, in the Gradebook on the course the faculty has entered the results for 4 students for Exam 1 so far and Canvas is calculating the Total. Her own calculations for these four students come out as 85.68, 101.59, 94.97 and 90.79 whereas Canvas is showing 86.7, 104.4, 95.6 and 93.3.


Hoping you can help

Investigation:
Logged in to canvas, went to 2151DHBS3202-100, grades, saw first four students had four total grades.


Response:
From what I can see, Canvas is calculating the grades correctly.

Semester review is 10% of final grade, Exams 1-3 is 60% of final grade, and Final Exam is 30% of final grade.

HOWEVER, Final exam has a null value.
Therefore, for the first row, 83.7 is 10% of the final grade, and 86.7 is 60% of the final grade.

Since this does not add up to 100%, the first column is actually 14.2857% of the final grade, and the second column is 85.7143% of the final grade:
100/(.7/.1) = 14.2857% and 100/(.7/.6) = 85.7143%
Taking the grades:
(83.7*0.1428571) + (86.7*0.8571429) = 86.27143, which is the displayed value.
You can check the other values yourself to confirm my math.
*********************

20150210 Turnitin

Plagiarism checker subscription service

login:
http://www.turnitin.com/
username gregory.orcutt@uth.tmc.edu
password 4...r

Krysti Suarez email of 1/30 (not sent to me):
*****************
From: Suarez, Krysti
Sent: Friday, January 30, 2015 7:35 AM
To: Weems, William A; Ball, Perry M
Subject: RE: Turniitin & Canvas Peremum Tier 1 Support

Both of these have been submitted.  Marie and I were trying to reach Amy Lanier or Gregg Orcutt to give them an update and make sure they received the email for the login.  I still have not received a confirmation from either one of them after leaving messages.  I cannot complete this transaction until I know we’ve received it.

Thank you,

Krysti Suarez
Administrative Services Officer III
Information Technology
Office 713-486-2241
Fax 713-500-2211
Cell 713-253-1795
*****************

My reply, sent 2/10 3:45
*****************
Krysti,
I have received the login email from turnitin.com, and have successfully logged in to your pilot page. Screenshot below.
Do you need anything else from me to complete this purchase?
Thanks
Greg

20150210 Halpin SOD report

This report is a calendar appointment that recurs on first Thursday every 6 months starting 2/6/14
The report is a simple query:
select count(pk1)
from bb_bb60.course_main cm
where cm.AVAILABLE_IND = ‘Y’
and cm.ROW_STATUS = 0
and cm.DATA_SRC_PK1 = 8
and (cm.COURSE_ID like ‘%DEN%’ or cm.COURSE_ID like ‘%DEP%’ or cm.COURSE_ID like ‘%CLIN%’ or cm.course_id like ‘%CDEP4100%’ or cm.course_id like ‘%NBDE4300%’ or cm.course_id like ‘%MBE-4200%’)

and cm.DTCREATED > to_date(SYSDATE-240)