Celebrate Excellence in Education: Nominate Outstanding Educators by April 15!
Hello-
We are looking for institutions that are willing to share their knowledge/experience regarding sending grades from the Canvas Gradebook to SIS (Banner).
Thanks so much!
Courtney Volpe
Montclair State University
Hello,
We are using a home grown J2EE app to both sync data to Canvas as well as accept grade posts from canvas. We have two different SIS systems we populate Canvas from, using API calls not CSV files, and could accept grade posts to both but currently only do for our Banner SIS.
Canvas is configured to post LTI format to our API, for example:
https://postgrades.uah.edu/API/grades
We parse the incoming XML, pulling out the instructor and sis_section_id, then reach out to canvas to pull down the grades for a section and post them to Banner using the delivered sproc sp_grading.p_post_grade(). We are reluctant to trust the data in the POST as only http basic auth is supported and limiting API access by ip is almost useless if we have to allow any AWS ip anyway.
Each "Publish grades" button click in canvas, invokes our API endpoint, which then fetches the grades for that section from canvas via canvas API, posts to banner, and emails the result to the instructor that initiated the post. Before calling the sproc we examine the current and final grades from canvas, and if there are discrepancies, we include that info in the grade posting email info, e.g. "Final grade does not match current grade for sis_user_id xyz" to give the instructor a heads up to adjust the final grades in the canvas gradebook. Typically enabling "treat ungraded as 0".
All is logged both in email and servlet log files.
Very interesting. Thanks for posting! Could you say a bit more about the 'delivered sproc sp_grading.p_post_grade().'? I wonder because we're planning to develop something like what you are describing but are using Peoplesoft instead of Banner (and currently do not possess the 'LIS 2.0' connector add-on for Peoplesoft). Thanks for any info on this. Also, BTW, I found the link you posted to be unreachable :-(.
Our ERP, Banner, comes with the PL/SQL stored procedure sp_grading.p_post_grade() that the vendor maintains. That handles all the nitty gritty details of what columns/fields to change when post a single grade. If Peoplesoft supports student grades I suspect is has a similar stored procedure or even better maybe an api for a third party to enter a grade for a student. Perhaps others on this list that use Peoplesoft would know more about what to invoke. We simply wrote wrappers to call it once for each student once we parsed, gathered, and validated the data from canvas.
The LIS 2.0 is simply xml with the LIS 2.0 DTD. Many mainstream programming languages can parse xml easily. We only extract the requestor id and course/section id from the xml then connect to Canvas's API to pull the grades for that section and post to our SIS.
The url I posted was made up as I did not want to post the real url. Also, in a browser it would not be helpful as it does not display anything, it is an endpoint canvas posts to via http POST method. Not a web page to browse and view.
Thanks for your reply! So the link is really your sort of 'simulated LIS 2.0 endpoint' , correct? Yes, I think I understand what is happening. I wonder how to configure Canvas to post to that specific URL though. Is this functionality within Canvas something that Instructure had to enable for you explicitly, or something already available and accessible to everybody?
We had to ask canvas to "turn it on" and add the http basic auth. Additionally, canvas can post via LIS or CSV. We of course asked for LIS.
I see. Thanks for explaining this William. I'm curious though as to why you went the LIS route since you are using custom development (apparently, but I may be missing something important though) . Was it because the LIS format provided additional information not found in the CSV file? Sorry to bombard you with questions 😞
As a general rule I prefer more formatted data like xml or json over csv. In xml the "tags" are the field names absolutely where in csv adding/removing a field that is not at the end of line can throw off the fields.
I see. Thanks for all the useful info!
Most welcome.
it may not be as relevant for grades, but character sets/languages can sometimes be a factor as well. csv data is typically 8 bit ascii, xml specifies the language in the document itself but is typically utf-8. If any of your csv fields contain extended ascii or multi-byte(unicode) data you have to ensure whatever is consuming your csv is aware of that. Not to mention escaping double quotes within field data. Or else you end up with data in the wrong places or corrupt data. Non-english student names are one example. More reading: The Advantages of XML Over CSV
Example of LDIS data from Canvas, very explicit fields:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE enterprise SYSTEM "ldisp-2.0.dtd">
<enterprise>
<properties>
<datasource>Instructure Canvas LMS</datasource>
<datetime>2015-04-09T22:04:46Z</datetime>
<extension>
<luminisproperties>
<requestor>
<sourcedid>
<source>Banner Student Information System</source>
<id>A0######</id>
</sourcedid>
<idtype>1</idtype>
</requestor>
</luminisproperties>
</extension>
</properties>
<membership>
<sourcedid>
<source>Banner Student Information System</source>
<id>201###_11###_01</id>
</sourcedid>
</membership>
......................
</enterprise>
Thanks again William. I'm myself familiar with XML although I've been avoiding it for the past few years (mostly for verbosity compared with json, my choice). But I didn't take into account the issue of the character sets and CSV. I guess it all depends on which character set Canvas uses to encode the content of the CSV when writing it. Given uncertainty about this (I've already discovered recently that Canvas does not explicitly set the character encoding of the http request involved in an LTI launch :-(), it may actually be convenient to resort to XML for this reason. BTW, your sample xml makes me think that there's already an LIS connection in place between Canvas and Banner at your institution. Is this correct? If so, it may mean that this type of solution would not work for us at this moment since we have no LIS connector in place :-(. Anyway, thanks again for sending this sample.
Our Luminis setup has the message gateway(LMG) that would normally accept these events configured for local network access only. We would have to open a hole in our firewall to allow outside network access which would allow anyone using AWS to attempt to connect to it. This *should* be okay, but I guess we are a bit paranoid. AWS has lots of customers.
Additionally, we have a second student system that is not banner(or peoplesoft, not a major vendor even) that syncs to canvas and that may potentially need to support grade push later on. So in both the data sync to canvas(users,courses,enrollments,etc.) and the grade push, we would have ended up with one using LMG and one custom. If we have to write custom anyway, just use it for both was our thinking.
Our java app uses .properties to configure each data source, both for data sync to canvas as well as grade posting. So it can support several datasources. For example:
config.1.name=Banner
config.1.jdbc.url=...........
config.1.datasource.sql.user=select distinct * from.........
config.1.datasource.sql.course=select distinct ............
config.1.datasource.sql.section=select distinct ...........
config.1.datasource.sql.enrollment=select * from .........
config.1.datasource.sql.gradesync_proc=ZUAH_PUSH_ONE_GRADE(?,?,?,?,?,?)
config.2.name=XYZ
config.2.jdbc.url=...........
config.2.datasource.sql.user=select distinct * from.........
config.2.datasource.sql.course=select distinct ............
config.2.datasource.sql.section=select distinct ...........
config.2.datasource.sql.enrollment=select * from ........
config.3......
Interesting William. We are also planning to do a custom grade push of the sort you've done although we're only using one SIS system (Peoplesoft). Our decision to do custom work is based mostly on the fact that we created a custom sync process already (also Java-based), and have no immediate plans to purchase the LIS connector for Peoplesoft at this time. While we are not using Banner (I apologize, this group seems to be specific to Banner users :-(), I believe that it may still be useful to share our experience pursuing such project (noting that in the process of writing custom software to do a grade push, one needs to take care of the two ends: 1- connecting Canvas to the custom software and 2- connecting the custom software to the SIS system, and the need for the first item is shared by all, no matter which SIS system you are using). BTW, we are in the early planning phase at this time. Thanks again for all your input.
Hi Patricia, we have just done a Peoplesoft integration and I can connect you with our technical team if that would help. We built an LTI tool which sits between Canvas and the SIS to incorporate a range of localised grade options and provide teachers with a course summary. Kevin
That would be great Kevin. Would love to know how your technical team went about implementing this (pgoldweic@northwestern.edu). Thanks!
I'm joining the conversation as we will be working on this very soon.
We will be doing this eventually at our university. We currently do that with our outgoing LMS.
Our K-12 School District is doing this in the fall. Hearing great things. Can't wait to try it.
We here at SUU are passing back grades from Canvas to Banner. We have developed a homegrown product to perform this function. We looked at Weber State University's homegrown product, but did something different. WSU has developed a heartier setup. You might want to contact them.
Within the State of Utah, we have additional requirements when grades are pushed back. Since all grades below a D, - F, withdrawals and incompletes require the date of last activity in our reports, we have to manually add that information within Banner. The beauty is that we use Passback to at least "pre-fill" the information for instructors. As we all know, this isn't perfect, but anything that can reduce faculty's time is a big sell.
We have found some issues though. "Creative" instructors that fail to fill out all the grades quickly find that the true grades do not go through, because it imports the grade sum of all that has been graded. If there is a dash, then there is no grade counted. So if a student just stopped turning in assignments, they may look like they have an A, but in reality they would have an F because they did not perform the rest of the assignments. things like that. Grade passback is great, when everything is filled out and graded in the Gradebook.
Well there is my 2 cents...
At Colorado State University we developed a home grown utility for Final Grades. It works great for instructors so they can export grades from their course in Canvas to an excel file that is formatted for the import to BannerXE!
Here is our website with details, for instructors: http://info.canvas.colostate.edu/final-grades.aspx
Basic process:
1-The instructor prepares their Canvas gradebook with final grades.
2-Clicks a custom “Final Grades Export” button in the grade book.
3-The letter grades are pulled from the Canvas grade book Total column into a web interface.
4-For U & F grades, instructors have the option of adding the Last Participation Date & the required Comment in our utility, or in the Banner interface.
5-Instructor exports the file to excel, into a pre-formatted file for BannerXE grade entry.
6-Instructors import the saved file to the Banner grades entry UI.
Note: For crosslisted courses with multiple sections, one .xlsx file is created with a separate tab for each section in the excel spreadsheet. BannerXE UI asks the instructor to select a tab in the step after selecting the file.
This model lets ALL instructors enter grades in BannerXE via the same model --> by spreadsheet. We’ve just done the work of preparing the file for them.
This is the exact same process we use at Virginia Tech. Many of our instructors take a "trust by verify" attitude towards grade exports, mostly because the grade change process is very labor intensive. They want to review the grades before they are uploaded into Banner.
We are looking into what it would take to automate the grade upload process from a technical standpoint, but we are also mindful that, even though it would result in less labor, it would be a major shift in business process. We want to completely understand the implications for our instructors and staff before we automate the process.
Every EDU is different of course, but for us we haven't had issues with grade trust(yet). We are optimistic that because our process is initiated from canvas per course, and may be invoked repeatedly for the same course as long as "grading for that course is allowed in Banner" which is controlled by our Registrar setting a value in Banner, and that each time an instructor uses it they get a summary email with course info as well as course roster with the specific grade each was given in Banner, this provides enough confidence for our faculty. They can also log into Banner and review the grades as well. YMMV.
To participate in the Instructure Community, you need to sign up or log in:
Sign In
This discussion post is outdated and has been archived. Please use the Community question forums and official documentation for the most current and accurate information.