Super Glue
What is SuperGlue?
SuperGlue is the integrations framework for the products of the California Community Colleges Chancellor's Office (CCCCO) and the California Community Colleges Technology Center (CCCTC). SuperGlue facilitates data exchange between the system-wide products built by or purchased by the CCCCO/CCCTC.
To accomplish data sharing, SuperGlue is designed as a suite of restful APIs and AWS SQS queue integrations using a microservices architecture.
The SuperGlue framework sits behind an API Gateway. The API Gateway can be viewed as a layer providing a single entry point (or gateway) into the growing array of CCCCO/CCCTC services accessed via APIs and SQS queues. The API Gateway encompasses Conductor, which works hand-in-hand with the API Gateway to orchestrate the microservice processes.
SuperGlue has been expanded to support other applications and services and makes use of container-based deployments using modern frameworks.
The RESTful APIs and AWS SQS queue integrations provide read and write data to a college’s Student Information System (SIS) “staging” tables. Colleges, then on their own schedules, can ingest that data into their school’s system.
Applications Integrated with SuperGlue Via APIs/SQS Queues
These applications are integrated with SuperGlue via APIs or SQS Queues:
Articulate Course API
Canvas API
College Adaptor Service
Master Data Management
OpenCCC Account Creation/Updates
Transcript Transfer service: Delivers Transcripts to and from Colleges (In Process)
SuperGlue provides API access to these RESTful clients:
- CCGI (California Colleges Guidance Initiative): provides student transcripts to be used in determining student placement
- College Placement Adapter: allows colleges to download student placements to a local server using the API
- ERP (Education Results Partners): provides student placement logic based on transcript/self-reported data
- Keycloak and Authenticate and Authorization Services: this is part of the Identity and Access Management to CCCTC services
- Miscellaneous APIs that: enroll a student, get course data, get student roster data, etc.
- Multiple Measures Student Placement Platform: facilitates the collection of verified high school transcript data, generation of an AB-705-compliant recommended placement in English and Math, and delivers the results to colleges along with each standard CCCApply application submitted.
- Student Profile Service (Displays in MyPath): a set of data collected from other sources for a given student (identified by CCCID) and made available in limited form to authorized clients with the proper credentials (i.e. MyPath). The current implementation provides a subset of
SuperGlue integrates with the Data Lake to:
- Audit data
- Store/Sync Canvas exports from Instructure used with the Data Warehouse
- Store/Sync CCCApply applicatio data used with the Data Warehouse
- Store/Sync Student placements data for the Student Placement Adapter downloads
Articulate Course API
C-ID is a course identification numbering system used by college faculty to submit, review, and approve of curriculum inventory courses that articulate (are comparable and accepted) between institutions. The course numbering listed in C-ID documents those courses that meet the associate degree for transfer (ADT) status. Another application may need to talk to the C-ID API to pull in and display course information for those courses that are available for ADT.
Canvas API
There are two different APIs discussed when talking about Canvas APIs:
- The "Canvas LMS REST API" created by Instructure (LMS API); and
- The "Canvas Integration API" developed at CCCTC (Canvas API).
The Canvas API synchronizes data from a college with the LMS API. This synchronization minimizes "double data entry" in the LMS when it already exists in the college's SIS. It also helps ensure the data between the college SIS and LMS remains consistent or "in sync" - changes made in the SIS will be reflected in the LMS.
CCCApply
Also known as "Glue for Apply," the Phase 1 goal of the SuperGlue support for CCApply/OpenCCC securely delivers CCCApply records in real time to a staging table in the College SIS via the College Adaptor. Data is stored in an encrypted database table at the college.
Records include:
- Entire CCCApply dataset
- Unencrypted LGBTQ data, and
- Supplemental Questions.
The Phase 2 of the SuperGlue Support for CCCApply/OpenCCC includes a complete replacement of the Download Client. The College Adaptor will include the ability for colleges to determine the dataset delivered, format fields according to SIS requirements, and write CCCApply data to the college SIS in real-time. Phase 2 also includes delivery of the CCC International App and the CC College Promise Grant datasets, as well as logic and processes for adding new fields, deprecating old fields, and changing field data types in CCCApply.
CC College Promise Applications (fka BOG Fee Waiver)
See CCCApply.
College Adaptor Service
The College Adaptor is a software product that normalizes the data between colleges and their SISs. It's made up of two components: the Adaptor Host (located at the college in a VM) and the Adaptor Service (part of the SuperGlue infrastructure). Except for the external connectivity for an admin through a VPN connection, the College Adaptor does not require any inbound publicly facing endpoint. All communications are initiated by the Adaptor to explicit outbound resource endpoints eliminating a common attack vector. The College Adaptor calls the Service-Router to pick up and process any request messages delivered from CCCTC applications such as CCCApply via a microservices workflow management system provided by Conductor. Makes use of Docker and Rancher.
You can see the College Adaptor's Swagger documentation here.
International applications (In Process)
See CCCApply.
Master Data Management
MDM provides the ability to keep the data in the California Community College applications in sync, keeping them current with the latest available data. MDM-enabled applications automatically receive notifications when data from the primary source is updated. This way the accurate information about all the entities in the system is always available to all participating applications. The first implementation of MDM is the Student Profile Service.
OpenCCC Account Creation/Updates
See CCCApply.
Transcript Transfer service: Delivers Transcripts to and from Colleges (In Process)
The API Gateway exposes a public URI that will invoke the Transcript Transfer service. The service will copy transcript data from one college to another.
Example: API Design to Save Student Applications to Colleges
Developers have a design step as a part of creating/adding a new API/service to the SuperGlue infrastructure. The design process includes research, documentation, and a complete design. The specific API or service is designed within the SuperGlue infrastructure, which is represented in the design image.
Specific API Gatewy items addressed in the design phase include things like the service router, service conductor, event handlers, workflow definitions, tasks, properties, service workers and responses.
For the CCCApply student application, for example:
* A student fills out an application using the CCCApply web portal.
* Previously, colleges would download some of that student application data and process some of it into their database (SIS).
* The below design sends all the application data to the college's SIS at the time the student submits it in CCCApply.
Save Student Application Workflow This workflow is started by the above Student Application Event Handler.
Since the input is only the unique ID of the student application, this workflow is responsible for making a REST call to get the entire student application data and then sending that data to the college-adaptor where it'll be saved into the SIS.
Workflow Input:
Parameter: studentApplicationId
Description: Unique ID of student application submitted.
GET APPLICATION DATA TASK
The workflow inbound message only contains the unique id of the application, so this task uses that ID to:
- Do an HTTP GET call to pass $input.studentApplicationId to retrieve the full application data.
- Set the JSON results in context output
Properties:
- CCCApply REST endpoint to retrieve student application from
- TBD security credentials for interacting with CCCApply
SAVE APPLICATION TASK
Given the student application in the workflow context, this task is processed by the college-adaptor worker and saves it into the SIS.
- Create a RESTful call for college-adaptor that includes the student application
College Adaptor - Model for CCCApply Student Application
.student-application.json
{
“appId”: 93341,
“ackFinAid”: true,
“appLang”: null,
“birthdate”: “1992-07-09”,
“bornBefore23Year”: true,
“campaign1”: null,
“campaign2": null,
“campaign3”: null,
“cccId”: “ABH7696”,
“certNationalGuard”: false,
“certVeteranAffairs”: false,
“city”: “Los Angeles”,
“collegeId”: “ZZ1”,
“collegeName”: “Unicollege”,
“confirmationApplicant”: true,
“confirmationNumber”: “BOG-93341",
“confirmationParentGuardian”: false,
“country”: “US”,
“depGrossIncome”: null,
“depNumberHousehold”: null,
“depOtherIncome”: null,
“depTotalIncome”: null,
“dependencyStatus”: “I”,
“dependentOnParentTaxes”: ” “,
“dependents”: false,
“determinedAB540Eligible”: false,
“determinedHomeless”: null,
“determinedNonResExempt”: false,
“determinedResidentca”: false,
“eligBogfw”: “B”,
“eligMedalHonor”: false,
“eligMethodA”: false,
“eligMethodB”: true,
“eligMethodD”: false,
“eligPoliceFire”: false,
“eligSept11”: false,
“email”: “rfTest_152658003322422353@e.rainforestqa.com”,
“emancipatedMinor”: false,
“firstname”: “Joseph”,
“generalAssistance”: false,
“homelessYouthHud”: false,
“homelessYouthOther”: false,
“homelessYouthSchool”: false,
“indGrossIncome”: 100,
“indNumberHousehold”: 1,
“indOtherIncome”: 50,
“indTotalIncome”: 150,
“ipAddress”: “10.0.0.214",
“lastPage”: “review”,
“lastname”: “Turner”,
“legalGuardianship”: false,
“livingWithParents”: null,
“mainphone”: “(310) 555-1213",
“mainphoneAuthText”: true,
“mainphoneExt”: null,
“mainphoneintl”: null,
“maritalStatus”: “S”,
“marriedOrRdp”: false,
“middlename”: “David”,
“noMailingAddressHomeless”: false,
“noPermAddressHomeless”: false,
“nonUsAddress”: false,
“parentGuardianName”: null,
“parentsAssistance”: null,
“parentsDeceased”: false,
“postalcode”: “90025",
“preferredFirstname”: “Sarah”,
“preferredLastname”: “Roberts”,
“preferredMiddlename”: “Matthew”,
“preferredName”: true,
“province”: null,
“regDomPartner”: false,
“ssiSsp”: false,
“ssn”: “512542354",
“ssnException”: false,
“ssnLast4": “2354”,
“ssnNo”: false,
“ssnType”: “0",
“state”: “CA”,
“status”: “I”,
“streetaddress1”: “12201 Texas Ave”,
“streetaddress2”: null,
“studentCollegeId”: “”,
“tanfCalworks”: false,
“termCode”: “2019",
“tstmpCreate”: “2019-03-07T17:28:13.269",
“tstmpDownload”: null,
“tstmpSubmit”: “2019-03-07T17:35:57.942”,
“tstmpUpdate”: “2019-03-07T17:32:19.093”,
“usVeteran”: false,
“yearCode”: “9",
“yearDescription”: “Fall 2018 through Summer 2019"
}