LMS to SIS Integration Workflow

Short answer: NC Self-Service itself — the student/employee portal you use via Banner (often called Self-Service Banner / SSB9) — does not generally expose a user-accessible public API in the way Canvas does.
Here’s the context:

📌 What Canvas provides

·         Canvas LMS (used in North Carolina higher ed) has a widely used REST API and supports integrations (access tokens, webhooks, LTI, etc.), and that API is intended for developers to build tools and automations for users. Canvas’s API is documented and accessible to users and developers with appropriate permissions.

📌 What “Self-Service” normally refers to

·         In many NC colleges and universities, “Self-Service” refers to the Banner Self-Service portal (e.g., Self-Service Banner 9). This is a set of authenticated web applications built on Ellucian Banner for students, faculty, and staff to view and manage academic and administrative tasks (course registration, grades, personal info, payroll, etc.).

·         It’s a web front-end, not a developer platform.

📌 Does Banner Self-Service provide a user API?

·         No public or user-accessible API is part of Self-Service Banner itself. Self-Service Banner modules are web UIs sitting on top of the Banner ERP/Student Information System (SIS). They are designed for interactive use via a browser, not for direct programmatic access by end users.

·         Any API access to the underlying data generally comes from the Banner system’s integration layer, not the Self-Service portal itself. Institutions can use Ellucian’s integration tools (like Ellucian Ethos APIs, Banner Web Services, or middleware platforms) to programmatically access Banner data for authorized systems — but these are institutional APIs (for developers with admin rights or integration privileges), not something a typical user can simply use out-of-the-box.

📌 Practical implications

·         Canvas API: Available for developers (students/teachers/IT) to build and integrate apps, automate tasks, etc.

·         Self-Service Banner: No direct user-accessible API. If your campus or IT department needs programmatic access to Self-Service data/actions, they generally must use:

o    Ellucian Ethos or other Banner integration/web services (configured by Banner administrators),

o    Or institution-specific APIs or middleware (often protected and not public).

📌 Summary

System

Has public/user API?

Canvas LMS

✅ Yes (developer API)

Self-Service Banner (SSB)

❌ No public/user API

If you’re asking because you want to automate or integrate some Self-Service functions (like getting schedules, grades, enrollment info, etc.), let me know — I can outline how most Banner systems support integrations (e.g., Ethos APIs, Web Services) and what your institution’s IT group would typically need to configure.

I am interested in writing code that would pull the date of a quiz (placed into Canvas by administration). What I need to do is pull the date the quiz was taken and put the same date into Self-Service Banner (SSB) for the same class and the same student. Currently teachers are do this leading to many errors (no reflection on the teachers).

Great — this is a very solvable integration problem, but it requires going through the institutional integration layer, not the Self-Service UI.

You’re essentially trying to:

Pull quiz completion dates from Canvas → write them into Banner (so they appear in SSB) for the same student + same course.

That’s a classic LMS ↔ SIS integration workflow.


✅ 1. Pulling the Quiz Date from Canvas

This part is straightforward. Canvas provides APIs for:

·         Quiz submissions

·         Assignment submissions

·         Submission timestamps (submitted_at)

·         User IDs

·         Course IDs

Depending on whether you're using Classic Quizzes or New Quizzes, you'd use:

GET /api/v1/courses/:course_id/quizzes/:quiz_id/submissions

or

GET /api/v1/courses/:course_id/assignments/:assignment_id/submissions

The key field you want is:

"submitted_at": "2026-02-10T14:03:22Z"

You’ll likely:

·         Pull all submissions for a quiz

·         Match Canvas user IDs to Banner IDs

·         Extract the submission date

This part is very doable with Python or similar.


❗ 2. Writing to Self-Service Banner (The Critical Part)

Here’s the important distinction:

You cannot write directly to “Self-Service Banner.”
SSB is just the front end.

You must write to Banner itself through one of these:

Option A — Ellucian Ethos API (Modern & Recommended)

Most NC institutions running Banner 9 use Ethos Integration.

Ethos provides REST APIs to:

·         Update student records

·         Insert academic activity data

·         Post attendance or participation dates (if configured)

This is the cleanest and safest method.


Option B — Banner Web Services (SOAP or REST)

Older but still common.

Banner exposes:

·         Student registration services

·         Grade services

·         Academic history services

These require:

·         Admin credentials

·         Institutional IT approval

·         Integration configuration


Option C — Direct Database Insert (⚠️ Not Recommended)

Technically possible if you have:

·         Oracle DB access

·         Knowledge of Banner tables (e.g., SFRSTCR, SHRTCKN, etc.)

But:

·         Risky

·         Can break audit trails

·         Often violates governance rules

·         Almost always prohibited without ERP admin approval


🧠 The Real Question

Before writing code, clarify:

Where in Banner does that “quiz date” live?

Is it:

·         Attendance date?

·         Participation verification?

·         Census reporting?

·         Academic engagement date?

·         A custom field your institution added?

Banner doesn’t have a generic “quiz completion date” field by default.

So your workflow must be:

1.   Identify the exact Banner field or process being updated.

2.   Ask IT which API/service writes to it.

3.   Use that service programmatically.


🔄 Typical Architecture for What You Want

Most institutions would implement something like this:

Canvas API → Integration Script (Python) → Ethos API → Banner → SSB displays data

Your script would:

1.   Authenticate to Canvas

2.   Pull quiz submissions

3.   Map Canvas User ID → Banner PIDM

4.   Transform timestamp to required Banner date format

5.   POST to Ethos/Banner endpoint

6.   Log success/failure


🔐 Permissions & Governance

You will almost certainly need:

·         Canvas API token (admin-level if pulling all students)

·         Banner integration credentials

·         IT approval (this touches official student records)

Because you’re modifying SIS data, this falls under:

·         FERPA

·         Institutional audit compliance

·         Possibly state reporting rules


⚙️ Technical Example (High Level Python Sketch)

import requests

 

# 1. Get Canvas quiz submissions

canvas_url = "https://school.instructure.com/api/v1/..."

headers = {"Authorization": "Bearer YOUR_TOKEN"}

 

response = requests.get(canvas_url, headers=headers)

submissions = response.json()

 

for submission in submissions:

    banner_id = map_canvas_to_banner(submission["user_id"])

    quiz_date = submission["submitted_at"]

 

    # 2. Send to Banner via Ethos

    banner_payload = {

        "studentId": banner_id,

        "courseReference": "202630-MAT-101-01",

        "participationDate": quiz_date

    }

 

    requests.post("https://ethos-api.school.edu/endpoint",

                  json=banner_payload,

                  headers=banner_auth)


🎯 What You Should Do Next

To move forward safely:

1.   Contact your Banner/Ellucian administrator.

2.   Ask:

“Is there an Ethos API or Banner web service endpoint we can use to write academic participation dates programmatically?”

3.   Confirm:

o    The exact Banner field being updated

o    The expected payload format

o    Authentication method (OAuth2? API key? Certificate?)


🏁 Bottom Line

Task

Difficulty

Pull quiz dates from Canvas

Easy

Write to Banner safely

Medium–Complex (requires IT partnership)

Write directly to SSB

Not possible


If you’d like, tell me:

·         Are you faculty, IT staff, or administration?

·         Do you know if your institution uses Ethos?

·         What exactly the date represents in Banner (attendance? participation?)

With that, I can give you a much more concrete technical plan tailored to how NC institutions typically configure Banner.

The date we need to update in Banner is attendance

Perfect — that helps a lot.

If the field in Banner is attendance, then what you’re really trying to automate is:

Canvas quiz submission date → Banner Attendance record (for that CRN + student)

That is very doable — but it depends heavily on how your institution records attendance in Banner.


Step 1: Clarify How Attendance Is Stored in Your Banner

Banner doesn’t have just one universal “attendance” field. Institutions typically use one of these:

Common Banner Attendance Configurations

1.   Attendance Tracking (SAAADMS / SFAALST / related tables)

o    Used for census/participation verification

o    Often tied to financial aid compliance

2.   Faculty Grade Entry + Attendance Hours

o    Less common

3.   Academic Engagement / Last Date of Attendance

o    Frequently used for Title IV compliance

o    Stored in academic history tables

4.   Custom Attendance Module

o    Some NC institutions have custom forms

You need to confirm:

·         Is this daily attendance?

·         Or first date of attendance (census verification)?

·         Or last date of attendance?

These are handled differently in Banner.


Step 2: The Correct Way to Write Attendance

You cannot write directly to SSB.
You must write to Banner via one of:

✅ Best Option: Ellucian Ethos API

If your school uses Ethos Integration:

You would POST attendance data to the appropriate resource (often academic-events, student-course-attendances, or similar — naming varies by version).

Your IT department would:

·         Enable the resource

·         Grant API credentials

·         Provide OAuth authentication

This is the clean, audit-safe way.


⚠️ Older Option: Banner Web Services (SOAP)

Some schools still use Banner 8-style web services for:

·         Attendance

·         Academic participation

·         Registration updates

This works but is less modern.


❌ Not Recommended: Direct Database Insert

You technically could insert into attendance-related tables, but:

·         You would bypass business logic

·         You could break financial aid reporting

·         You could create audit violations

·         IT will almost certainly forbid it

Do not go this route unless you are Banner ERP admin.


Step 3: Technical Architecture for Your Use Case

Here’s what a clean integration looks like:

Canvas → Python Integration Script → Ethos API → Banner → SSB displays attendance

Your script logic would be:

1.   Pull quiz submissions from Canvas

2.   Extract:

o    Canvas user ID

o    Course ID

o    submitted_at date

3.   Map:

o    Canvas user → Banner PIDM

o    Canvas course → Banner CRN

4.   Transform timestamp to Banner-required format

5.   POST attendance record to Banner API

6.   Log success/failure


Step 4: The Hardest Part — ID Mapping

This is usually where integrations fail.

You must reliably map:

Canvas

Banner

user_id

PIDM or Banner ID

course_id

CRN

term

Banner term code

Many schools solve this by:

·         Using SIS ID fields in Canvas

·         Storing Banner ID as sis_user_id

·         Storing CRN in sis_course_id

If your Canvas is properly SIS-integrated (most NC schools are), this part is manageable.


Step 5: Important Compliance Note (Very Important)

Attendance in Banner is often tied to:

·         Financial aid disbursement

·         State reporting

·         Title IV eligibility

·         Census reporting

So your automation must:

·         Log every write

·         Avoid overwriting existing attendance unintentionally

·         Handle corrections carefully

·         Be approved by Registrar/Financial Aid

This is not just technical — it’s regulatory.


Step 6: Smart Implementation Strategy

Here’s how I would approach this if I were building it at an NC institution:

Phase 1 — Read Only

·         Pull quiz submissions

·         Generate a report comparing:

o    Canvas quiz date

o    Banner attendance date

·         Identify mismatches

Phase 2 — Controlled Pilot

·         Write attendance only for one department

·         Log every transaction

·         Email summary report daily

Phase 3 — Full Automation

·         Scheduled job (nightly)

·         Error reporting dashboard

·         Retry logic for failures


What I Need From You

To give you a concrete technical design, I need:

1.   Are you IT staff or faculty?

2.   Do you know if your institution uses Ethos?

3.   Is this:

o    First date of attendance?

o    Daily attendance?

o    Last date of attendance?

Because those three are implemented very differently in Banner.


Big Picture

Technically:

·         Canvas side = easy

·         Banner side = controlled and permission-based

·         The integration = very achievable with the right API access

Organizationally:

·         You’ll need Registrar + IT partnership

If you’d like, I can next:

·         Outline a full production-ready architecture

·         Or give you a sample Python integration structure

·         Or explain how attendance is typically stored in Banner tables (if you’re comfortable at that level)

Just tell me your role and your current access level.

For census

Excellent — that narrows this down a lot.

For census, what Banner cares about is typically:

Academic Attendance / Academic Engagement Verification at census date
(Used for Financial Aid / Title IV reporting)

This is not daily attendance. It is usually a one-time participation confirmation per CRN per student.


🔎 What “Census Attendance” Usually Means in Banner

At most Banner schools, census attendance is recorded as one of:

1.   Attendance indicator (Present/Not Attended)

2.   Academic Engagement indicator

3.   Last Date of Attendance (if dropped)

4.   Participation verification flag

The actual data often lives in:

·         SFRSTCR (registration record)

·         Attendance verification tables tied to faculty grading

·         Or institutional custom attendance tracking forms

Your Registrar can tell you exactly which.


🎯 What You’re Trying To Automate

You want:

If a student submitted a census quiz in Canvas
→ Mark them as “Attended” in Banner for that CRN

That’s very reasonable — and many institutions are moving this direction.


🧱 Correct Architecture for Census Automation

You should implement this flow:

Canvas API → Integration Script → Banner Ethos API → Census Attendance Update

NOT:

·         Screen scraping SSB

·         Direct DB writes

·         Manual imports


🛠 Step-By-Step Technical Plan

Step 1 — Pull Census Quiz Submissions from Canvas

You’ll call:

GET /api/v1/courses/:course_id/assignments/:assignment_id/submissions

You check:

·         submitted_at is not null

·         Submission date ≤ census date

·         (Optional) score > 0

That gives you:

·         Canvas SIS User ID

·         Canvas SIS Course ID (usually contains CRN)

·         Submission timestamp


Step 2 — Match IDs

This is critical.

Most NC institutions sync Banner → Canvas using SIS imports, so:

Canvas Field

Should Contain

sis_user_id

Banner ID

sis_course_id

Term + CRN

enrollment_term_id

Banner term

If your Canvas is properly configured, you do not need a manual mapping table.


Step 3 — Write to Banner

You will need one of:

Ellucian Ethos API (Preferred)

Ask IT:

“Is there an Ethos resource for updating census attendance or academic engagement status for a student registration record?”

Many schools expose:

·         Student Course Registrations

·         Academic Engagement

·         Attendance Verification resources

Your script will:

·         Authenticate (OAuth2)

·         PATCH or POST attendance status

·         Log transaction ID


⚠️ If No Ethos

Some institutions still:

·         Run census via Faculty Grade Entry

·         Use Banner Web Services (SOAP)

·         Run batch PL/SQL jobs fed by CSV

If Ethos isn’t available, you may need:

·         A nightly CSV export

·         Automated secure upload

·         Banner job to process attendance flags

That’s institution-specific.


🧠 Important Census Logic Rules

For compliance, your automation should:

Only mark attendance if quiz submitted before census cutoff
Never overwrite a manually marked “Never Attended” without review
Log every update
Be idempotent (running twice should not double-update)


🧪 Smart Implementation Strategy

Before writing to Banner:

Phase 1 — Comparison Report

Generate a daily report:

| Student | CRN | Canvas Quiz Submitted | Banner Attendance | Mismatch? |

Send to Registrar.

This builds trust.


Phase 2 — Limited Pilot

Only auto-mark:

·         Students currently marked “No Attendance”

·         Where Canvas shows verified submission

Keep audit logs.


⚠️ Regulatory Warning (Important)

Census attendance ties directly to:

·         Pell Grant eligibility

·         State funding

·         Return-to-Title-IV calculations

So this must be:

·         Registrar-approved

·         Financial Aid-approved

·         Fully logged

You are modifying official academic records.


📌 Questions I Need Answered

To give you a precise design:

1.   Does your institution use Ellucian Ethos?

2.   Do faculty currently mark census attendance inside:

o    Faculty Grade Entry?

o    An Attendance Verification module?

3.   Is the census quiz standardized across all courses?


🏁 Bottom Line

Technically: Very feasible
Organizationally: ⚠ Requires IT + Registrar
Safely done via: Ethos API or Banner Web Service
Never via: Direct DB writes or SSB automation