This service is the mechanism that is used as part of the synchronization processes for a PASI Client to determine if the PASI Core contains data that is newer than what they have.
This service uses a number of architectural techniques including long polling, version tracking, and MD5 hashes. For more information about these techniques please review the Technical API documentation for Data Synchronization.
The Is Data Available service is used to request updates to each entity within PASI. Each of these entities has an associated Get service. The Is Data Available service is used to determine if there are any updates available to be retrieved, and the Get service is used to retrieve the updated information.
Is Data Available returns back to the PASI Client a list of record IDs and Versions Numbers identifying the records that have been updated. The PASI Client then passes those record IDs and Version numbers into the Get service to retrieve the updated details.
Note: As the PASI solution is running in a multi-node environment to support load balancing processes, there are rare race conditions where one node may know about information that another node does not know about (yet). In the event that this condition is realized, PASI will stop returning information in response to the Get service and the PASI Client will need to try again.
The following information is provided when using this service (* denotes mandatory):
The request outlines what type of information the PASI Client is requesting updates for. These types are used to categorize the information within PASI, and directly correspond to a “Get” service. A PASI Client can request updates of the following information for the student with the identified associations to the organization:
Notification Type | Rules to Synchronize Data | Business Object | Get Service1) |
---|---|---|---|
ClassroomAccommodation | As per the Synchronization Classroom Accommodation Data Access Rules | Classroom Accommodation | Get Classroom Accommodation |
ClassroomAccommodationStatus | As per the Synchronization Classroom Accommodation Status Data Access Rules | Classroom Accommodation | Get Classroom Accommodation Status |
Course | Not based on an association to students | Course | Get Course |
CourseEnrolment.YYYY | Not based on an association to students | Course Enrolment | Get Course Enrolment |
CourseEnrolmentStatus.YYYY | Not based on an association to students | Course Enrolment | get_course_enrolment_status_2018 |
DiplomaExam.YYYY | Not based on an association to students | Diploma Exam | Get Diploma Exam |
DiplomaExamMark.YYYY | One of: By Ministry, By Student Creation, By Current School Enrolment, By Last School Enrolment, By Recent School Enrolment In addition to student associations, a diploma exam mark record can be returned when the client has Association to the Writing Centre, or an organization associated to the Writing Centre, that owns2) one or more diploma exam mark components for a diploma exam mark. | Diploma Exam Mark | Get Diploma Exam Mark |
DiplomaExamRescoreRequest | Not based on an association to students | Diploma Exam Rescore Request | Get Diploma Exam Rescore Request |
DiplomaExamSitting.YYYY | Not based on an association to students | Diploma Exam Sitting | Get Diploma Exam Sitting |
EducationAccountConnection | Only returns data for O.1 | myPass Connection | Get Education Account Connection |
EvaluatedMark.YYYY | Not based on an association to students | Evaluated Mark | Get Evaluated Mark |
EvaluatedMarkStatus.YYYY | Not based on an association to students | Evaluated Mark | Get Evaluated Mark Status |
ProvincialAchievementTest.YYYY | Not based on an association to students | Provincial Achievement Test | Get Provincial Achievement Test |
ProvincialAchievementTestResult.YYYY | As per the PAT Result Synchronization Data Access Rules. | ||
Responsible School | Responsible School Synchronization Data Access Rules | Responsible School | Get Responsible School |
Responsible School Status | Responsible School Data Access Rules | Responsible School | Get Responsible School Status |
School | Not based on an association to students | School | Get School Information |
SchoolAuthority | Not based on an association to students | School Authority | Get School Authority Information |
SchoolCalendarYear.YYYY (school year is optional) | Not based on an association to students | Deprecated as of Release 8.8. Will no longer return any notifications | |
Section.YYYY | Not based on an association to students | Section | Get Section |
SectionStatus.YYYY | Not based on an association to students | Section | Get Section Status |
Student | Student Data Access Rules | Student | Get Student (2019 Endpoint) |
StudentRecordDocument | See the “synchronization” section of the Student Document Data Access Rules | Student Document | Get Student Record Document |
StudentSchoolEnrolment.YYYY | Not based on an association to students | Student School Enrolment | Get Student School Enrolment |
StudentSchoolEnrolmentStatus.YYYY | Not based on an association to students | Student School Enrolment | Get Student School Enrolment Status |
StudentStatus | One of: By Ministry, By Student Creation, By Current School Enrolment, By Last School Enrolment | Student | Get Student Status |
StudentTranscriptDetail | One of: By Ministry, By Student Creation, By Current School Enrolment, By Last School Enrolment, By Recent School Enrolment | Student | Get Student Transcript Detail |
For each type of information being requested, the request also identifies the last PASI Core Version that has been synchronized. By using this, PASI Core can determine which records have been updated since the last time the PASI Client synchronized.
Note: In the cases where the Notification Type ends with a “YYYY”, that “YYYY” should be replaced with the school year that the client wishes to synchronize against.
Unless otherwise specified, all data accessible by the PASI Client is considered during synchronization. In most cases, the data requested must be filtered by school year where only future, current, or the last 2 school years can be synchronized. The school year filter does not apply to the synchronization of Student, School Information, School Authority Information and Course Information.
The following rules are used to validate the information provided in the request:
Based on the information in the request, PASI identifies if there are any updates to provide to the PASI Client.
Consumers of the Is Data Available service can specify the Wait Time In Minutes parameter to determine when the service will check to see if there is any new data that the client has interest in and to determine how long the connection to PASI will be maintained.
When synchronizing Evaluated Mark records, records with an Evaluation Method of “School Awarded Adult Equivalency Credits” will be excluded from the results returned by this service across all endpoints.
Setting the WaitTimeInMinutes parameter to zero will cause the service to see if there is new data that the PASI client is interested in and return a result indicating if new data is available immediately.
Setting the WaitTimeInMinutes parameter to something greater than zero will check to see if there is new data that the client is interested in and return immediately if there is new data available the PASI client is interested in. If there isn't new data available this method will wait for one of two events to occur:
In order to handle the scenario where a client is potentially missing data that it should have (or have data the core isn't aware of) a second strategy is used to identify differences between the client and the core.
With this optional approach the client sends with its request a MD5 hash of the all object versions a client has of a specific data notification type (i.e. loop through all the students and create a hash of the object version).
When the Max PASI Core Version’s on the request matches the information in PASI, and the hash value has been provided on the request, PASI will also calculate the same MD5 hash. If the value provided on the request and the value calculated by PASI differ, then the client is out of sync with the core.
In this scenario the core will return a full list of Id and PASICoreVersions for the requested type. The client can then compare each Id and PASICoreVersion to the client's local list and determine what record(s) is out of sync.
The following information is returned after a successful request has been processed:
A response to an Is Data Available request will first identify if there are any updates to be applied by the PASI Client. If there are, then the response will contain a list of updates that should be applied by the PASI Client.
For the Status objects (Student Status, Student School Enrolment Status, Section Status, etc…), they will be considered updated if the Core Alerts associated to the record have changed. This may be the result of changes to the record objects themselves, but may also be caused by other conditions including the passage of time.
This list does not contain the specific data that has been updated, but identifies the objects, their corresponding identifiers (e.g. for Student the identifier is the student’s Alberta Student Number), and the current PASI Core Version for each record.
Note: This list will contain a maximum of 150,000 records.
When a record has been physically deleted from PASI but is still loaded in the cache, Is Data Available will not return the physically deleted record(s) as part of a call to this service. This is true regardless of what version number is submitted as part of the Is Data Available call.