SchoolInfo Campus
http://specification.sifassociation.org/Implementation/AU/3.4.5/CommonTypes.html#CampusContainerType
Element/@Attribute | Char | Synergetic Mapping | Description | Type |
---|---|---|---|---|
CampusContainerType | O | Optional campus details. | ||
ParentSchoolId | C | Config.Value (ExternalSystem>SIF>SchoolInfo>>LocalID) | Parent School Id needs to be supplied if this Campus is not the Admin Campus. This number should be the state-assigned identifier for this school or the locally-assigned identifier for this school. | xs:normalizedString |
SchoolCampusId | M | luCampus.CampusCode | Specific Campus Id - This may be the same as the School Local Id. | xs:normalizedString |
CampusType | O | <Not mapped> | Type of campus. | AUCodeSetsSchoolLevelType |
AdminStatus | M | 'N' | Is this campus the Admin Campus? | AUCodeSetsYesOrNoCategoryType |
Requirement
Change for SchoolInfo GET requests to return multiple records.
A Synergetic client configured with no campuses will have a single SchoolInfo record, otherwise a record will be generated for the core school and any records that exist in luCampus.
Any blank or inactive luCampus values will be ignored.
This should be backwards compatible, and should result in campus being contextualised in a non-destructive fashion.
Approach
Will pass the SchoolCampusId as per lookup table luCampus.
We will need to store the additional campus-based SchoolInfoRefID in luCampus.
We currently support a single SchoolInfoRefId recorded in Synergetic.
When we receive a SchoolInfo request with a SchoolInfoRefId relating to a specific campus, this needs to be referenced against the respective entries in luCampus and then apply a different logic to contextualise the data being returned.
If a POST request is made with a campus-level SchoolInfoRefId, then the record can be translated so that campus detail can be effectively stored (ie. if a POST for StudentSchoolEnrollment was required) as there are no other campus-related fields in the specification.
If you had the 'Admin' school in the posting and there are multiple year levels split across campuses in the school, then this would otherwise fail so the CampusContainerType addresses this.
UPDATE: For Post/Put endpoints, the consumer can send either Main School Sif3RefID or Campus Sif3RefID. In case of campusrefid the system checks if the campus is correct otherwise it returns error to the consumer and the operation gets cancelled. If everything is ok eventually the correct campus will be stored in SchoolSIF3RefID column in the object store .
We will not populate the CampusType value.
Implementation
- Update luCampus to add SchoolInfoRefId
- Retrospective changes to GET requests for currently implemented SIF objects, including SchoolInfo, StaffAssignment, StudentAttendanceTimeList, StudentContactRelationship, StudentSchoolEnrollment, StudentScoreJudgementAgainstStandard, TeachingGroup, Timetable, TimetableCell
- Modify implementation of the SchoolInfo object to cater for additional mappings if these are required on a per-campus basis (ie. ACARAId)
- 'Admin' SchoolInfoRefId field will be always N
- Documentation (clearly mark which objects are 'Campus' enabled)
Challenge
We have a concept of an object store that we would need to promulgate instances of every possible object.
Additional records will need to be generated to cater for instance where campus-level SchoolInfoRefId records are in play
Solution
No additional record has been generated for this. Instead a new column added to Object Store to maintain the campus ref id. The object xml remains the same containing Main School SIF3RefID. For Single and Multi Endpoints of the campus enabled SIF objects the response still has the Main School SIF3 RefID in school node. However for Service Path endpoints this node holds the campus sif3 refid based on the campus refid the consumer passes on the request.