How to Access Both SIS IDs from a Merged User Account

Jump to solution
cassidy_vela
Community Explorer

Background:

We are currently using a system for Continuing Education that creates a new user in Canvas with an SIS ID regardless of whether that user's email already exists on an account. I have a script that runs and merges these accounts when they are created based on email so that users can access all their courses from either login with the default account being the oldest account.

Problem:

We have students at our University who are also Continuing Education students, and we rely on their University SIS ID to connect them to our SIS when running reports. However, when I pull users from the API, Canvas may return their Continuing Education SIS ID rather than their University SIS ID.

Question:

How can we select which SIS ID is returned, or at least pull both into my report from the API?

1 Solution
James
Community Champion

@cassidy_vela 

The easiest way is going to be to get this information from your SIS and do a cross-reference on your own.

Canvas keeps a record of both IDs so that functionality will continue to work, but it's only going to give you the current SIS ID in any report. You don't get a choice over which ID is returned or a way to pull both.

Now, it is possible to get a list of the Canvas user IDs from the Provisioning report (Admin > Settings > Report). Select users and include deleted objects. When users have multiple logins, they show up multiple times with the same Canvas ID. You may or may not be able to get multiple SIS IDs there.

We have 106 users with multiple logins, but only 64 SIS IDs. In our case, we were changing the login ID, so it moved the SIS ID to the new login ID so that doesn't apply. But in some cases, we do have multiple SIS IDs for the same Canvas ID. For us, all of the users with multiple SIS IDs had at least one of them deleted, so Canvas has the notion that there is just one SIS ID for that user.

Even if you can get the list through the provisioning report, you'll still have to do the cross-listing on your end as the reports are only going to give a single value.

View solution in original post