This section documents the set of SIF Zone Services which are defined using the service message types added to the SIF v2.4 infrastructure, and which leverage the advantages of the service paradigm (encapsulation of object data and behavior) in support of complex data exchange processes.
Zone Services is the third major conceptual component to be introduced into the SIF architecture. This introduction provides the necessary context for understanding them in relation to the Object Data Model and the SIF Infrastructure.
The following terms will be used throughout the rest of this section. Wherever possible, they reflect common industry usage and consensus.
A Service is a software application that responds to requests made of it by client applications. Any given application can be both a service used by multiple clients, and a client which itself uses other services.
Every service possesses a public interface defining exactly what operations may be initiated against the service. This interface specifies the operations the service supports, the data these operations accept and the results they return. Each service also has a private (unpublished) implementation that determines how the service will fulfill, or respond to, requests.
The fact that the service implementation is private (encapsulated) means that even if the details of that implementation radically change, the interface is unaffected and none of the clients of that service will be impacted. Ensuring that clients are independent of how a service is actually implemented is known as loose coupling, and a key enabler of the Zone Service architectural component.
A SIF Object Provider can be considered an “Object Service”. The Service interface in this case is composed completely of CRUD (Create, Read, Update, and Delete) operations for the object data it provides. Making a SIF Request is equivalent to invoking a “Read” operation, and the SIF Event equates to the “Create”, “Update” and “Delete” service operations.
Neither the structures of the SIF Object hierarchy nor the behavioral aspects of an educational process can be encapsulated by these Object Services.
The existing SIF infrastructure has been extended to support “non-CRUD” operations, which allow Zone Services to be constructed that encapsulate both the details of the object hierarchy and associated transactional behavior. Three SIF message types (ServiceInput, ServiceOutput and ServiceNotify) have been added to carry these non-CRUD operation requests, responses and event notifications respectively. As a result, any client of a Zone Service must support this extended SIF infrastructure.
All Zone Service interfaces will follow the “Document Literal” pattern. The payload of each of these message types will have its structure defined by an XML schema which can be validated using the corresponding schema definition supplied within this SIF specification.
Although Zone Services are “services” in the sense of encapsulating the details of the operations they perform for their clients, all communications with their clients MUST pass through the ZIS with the same communication mechanisms used by Object Clients and Object Providers. This provides the Zone Client to Zone Service link with the following “quality of service” (QoS) advantages:
This permission is granular, and a given client subscriber can be granted permission to receive none, some or all of the notification types provided by a Zone Service.
In brief, if the need for application interoperability is limited to sharing data, the solution should utilize existing client access to one or more Object Provider Services over the basic SIF infrastructure. However, if there is a need to support a more complex (possibly stateful) process choreography that requires multiple systems to coordinate their actions, one or more Zone Services should be employed.
Content-based routing for the SIF_Request, SIF_Event, SIF_Response and SIF_CancelRequests messages is based solely on the identified object type in the header of the message. Together those message types provide the client with the same CRUD interface (Create, Read, Update and Delete operations) to every type of object.
A given service type on the other hand may support a unique set of interface operations, which can affect multiple objects of varying types, in support of complex transactions or process choreographies. The existing SIF message types were incapable of being extended to support this additional functionality.
The three messages, which Zone Services use instead, are described below. All three have the name of the service and the operation being invoked as part of their message definition.
This message is issued by a Zone Service client to invoke a defined Zone Service operation. It is routed by the ZIS to the default provider for that service, and like the Request can be directed to a specific destination as specified in the SIF_DestinationId in the ServiceInput header.
Service Inputs differ from Object Requests in the following ways:
An example of a ServiceInput request sent by a client to the “Weather Service” requesting the forecast is shown in the SIF_ServiceInput section.
This message is issued by a Zone Service in response to one of its operations being invoked by an arriving ServiceInput message, and is routed by the ZIS back to the issuing client. All internal implementation details of how the Zone Service processes the request to produce this response (potentially including sending multiple Change Events to a variety of Object Providers) are hidden from the client.
An example of the ServiceOutput response sent by the Weather Service in response to a ServiceInput request for the forecast is shown in the SIF_ServiceOutput section.
This message is used to notify subscribers that a service related event has occurred, and can optionally provide a detailed description of exactly what that event was. Service Notifications differ from Object Events in the following ways:
An example of a Service Notification of a Student Transfer issued by the “Food Service” Service is shown in the SIF_ServiceNotify section.
The following requirements apply to all Zone Services:
The following requirements apply to all Zone Service Clients:
The following requirements, provided by the ZIS, apply to any zone in which Zone Services are deployed:
Best practices for designing a Zone Service include:
Many interactions/transactions between participants in a business process are difficult to implement using a sequence of SIF_Request/SIF_Response and SIF_Event messages. This can be true for a number of reasons.
A special Object Event can be issued, but there is no standard way to detect if the application accepted the data since the subscriber to an Event does not respond to the publisher. So a complex exchange of Events with essentially the same elements duplicated in multiple “process objects” generally results.
While the second and subsequent responses can be issued as Events, there is no way to distinguish their differences since all events for a given object type are essentially requests to update the data in a specific object. A Zone Service supports multiple named Notifications which:
Where one or more of the above situations is true, development of a Zone Service should be considered. Otherwise the primary design effort should be focused on defining additional data elements and/or SIF Data Model object types.
Zone Service | Description |
serviceAgencyStudentIdRequest | Perfoms the simple operation of requesting a student identifier. |
serviceAgencyStudentIdManagement | Performs more sophisticated student identifier operations. |
serviceAgencyStaffIdRequest | Perfoms the simple operation of requesting a staff identifier. |
serviceAgencyStaffIdManagement | Performs more sophisticated staff identifier operations. |
The Agency Identifier Services replace and generalize data model objects currently in the Specification. The current StudentLocator object and its required request/response choreography are deprecated and will be removed from the specification in the next major release of the SIF Implementation Specification. Although the Identifier Services have been generalized from a state to any kind of agency, many of the examples refer to district and state agencies in order to retain clarity around the transactions.
The data-model-based functionality has been refactored into student Agency Identifier Services:
In addition, an equivalent pair of “StaffLocator” equivalent services has been defined:
With an identical set of functionality, the Staff services are involved in a fully parallel identification process. They differ from the Student services only in the Characteristics element that communicates the identifying characteristics of a staff member/employee, vs. a student.
Both Agency Identifier Request Services provide the following operations:
RequestIdentifier provides equivalent functionality to a Locator SIF_Query sent from a district to a state, with an identifying IdStatus of “Request Locator”.
The Agency Identifier Management Service provides four operations:
AssignIdentifier is used by a district to instruct the state to assign a new identifier to a student or staff member when no matches supplied by the Request Service are appropriate. It provides equivalent functionality to a StudentLocator SIF_Query sent from a district to a state, with an identifying IdStatus of “New Locator”.
ResolveIdentifier is used to instruct the state that a given identifier from a list of ambiguous matches does indeed uniquely identify a student or staff member. It provides the equivalent functionality to a StudentLocator SIF_Query sent from a district to a state with an identifying IdStatus of “Resolve Locator”.
ReleaseIdentifier is used by a district to instruct the state that a student or staff member has left the district and that the state may release the binding with the district. It provides equivalent functionality to a StudentLocator SIF_Query sent from a district to a state with an identifying IdStatus of “Release Locator”.
The Cancel functionality of the StudentLocator object is provided by a CancelTransaction operation in each service.
Neither the Agency Identifier Request nor the Agency Identifier Management Zone Services define a SIF_MaxBufferSize distinct from the infrastructure default. If an Agency Identifier Zone Service message is large enough to require packetization, the packet “break” can occur only at the end of a RequestIdentifierResponse/Match element.
This use case process describes the Zone Service choreography used in support of state Id assignment to an enrolling student.
Zone Service | Service Input | Service Output | Description |
serviceAgencyStudentIdRequest | RequestIdentifier | RequestIdentifierResponse | This is a district request to the state to return the StateProvinceId for the student indicated by the identifying elements. The state returns one Match marked Valid, or one or more Matches marked Ambiguous, or indicates a processing error in SIF_ServiceOutput/SIF_Error. |
serviceAgencyStudentIdRequest | CancelTransaction | CancelTransactionResponse | This is a request to cancel a transaction. |
Zone Service | Service Input | Service Output | Description |
serviceAgencyStudentIdManagement | RequestIdentifier | RequestIdentifierResponse | This is a district request to the state to return the StateProvinceId for the student indicated by the identifying elements. The state returns one Match marked Valid, or one or more Matches marked Ambiguous, or indicates a processing error in SIF_ServiceOutput/SIF_Error. |
serviceAgencyStudentIdManagement | AssignIdentifier | AssignIdentifierResponse | This is a district follow-up to a RequestIdentifier transaction indicating none of the match candidates is appropriate and an indication to assign a new identifier. The state returns a StateProvinceId or indicates a processing error in SIF_ServiceOutput/SIF_Error. |
serviceAgencyStudentIdManagement | ResolveIdentifier | ResolveIdentifierResponse | This is a district follow-up request to a RequestIdentifier transaction resolving ambiguities with the information from the match candidate populated by the district. |
serviceAgencyStudentIdManagement | ReleaseIdentifier | ReleaseIdentifierResponse | This is a district request to notify the state that the student indicated by the supplied StateProvinceId has left the district and instructs the state to release the binding between the student and the LEA. |
serviceAgencyStudentIdManagement | CancelTransaction | CancelTransactionResponse | This is a request to cancel a transaction. |
Zone Service | Service Input | Service Output | Description |
serviceAgencyStaffIdRequest | RequestIdentifier | RequestIdentifierResponse | This is a district request to the state to return the StateProvinceId for the Staff indicated by the identifying elements. The state returns one match marked valid, or one or more matches marked ambiguous, or indicates a processing error in SIF_ServiceOutput/SIF_Error. |
serviceAgencyStaffIdRequest | CancelTransaction | CancelTransactionResponse | This is a request to cancel a transaction. |
Zone Service | Service Input | Service Output | Description |
serviceAgencyStaffIdManagement | RequestIdentifier | RequestIdentifierResponse | This is a district request to the state to return the StateProvinceId for the Staff indicated by the identifying elements. The state returns one match marked valid, or one or more matches marked ambiguous, or indicates a processing error in SIF_ServiceOutput/SIF_Error. |
serviceAgencyStaffIdManagement | AssignIdentifier | AssignIdentifierResponse | This is a district request to the state to assign an Id for the Staff indicated by the identifying characteristics. The state returns a StateProvinceId or indicates a processing error in SIF_ServiceOutput/SIF_Error. |
serviceAgencyStaffIdManagement | ResolveIdentifier | ResolveIdentifierResponse | This is a district request to associate the supplied StateProvinceId with the Staff indicated by the identifying characteristics. |
serviceAgencyStaffIdManagement | ReleaseIdentifier | ReleaseIdentifierResponse | This is a district request to notify the state that the Staff indicated by the supplied StateProvinceId has left the district and instructs the state to release the binding between the Staff and the LEA. |
serviceAgencyStaffIdManagement | CancelTransaction | CancelTransactionResponse | This is a request to cancel a transaction. |
Element/@Attribute | Char | Description | Type | |
---|---|---|---|---|
RequestIdentifier | ||||
TransactionId | M | GUID that identifies the RequestIdentifier operation. | GUIDType | |
RequestingAgencyIds | O | List | ||
RequestingAgencyIds/RequestingAgencyId | OR | Identification of the agency and/or location requesting the state Id. Optional because the SIF zone infrastructure may provide adequate information for the state to ascertain the origin of the request. | xs:normalizedString | |
@ | Type | M | The functional level of the requesting agency. | values:
|
MinimumConfidence | O | States may choose to allow requesting agencies to indicate the minimum confidence level to associate with the request (see Match/Confidence for more information). | xs:normalizedString | |
StudentRequestParameters | C | Characteristics of the student identified by the district which the state uses to perform its matching logic. This element is used with the Student Identifier Service. | StudentParametersType | |
StaffRequestParameters | C | Characteristics of the staff person identified by the district which the state uses to perform its matching logic. This element is used with the Staff Identifier Service. | StaffParametersType |
Element/@Attribute | Char | Description | Type | |
---|---|---|---|---|
RequestIdentifierResponse | ||||
@ | IdStatus | M | Status of the match. | values:
|
TransactionId | M | GUID that identifies the RequestIdentifier operation. | GUIDType | |
StateProvinceId | O | The identified state student Id. Must be empty when there are no matches (a single Match marked Ambiguous). | StateProvinceId | |
Confidence | O | Confidence score. The main use of this element is when IdStatus equals "Ambiguous" and the state returns one or more* candidate matches. The interpretation is that the information populated in each returned object matches the information in the request to the extent expressed in this score. The matching/scoring algorithms (and resultant values) are defined by the particular state. *A response marked "Ambiguous" with a single match candidate populated likely means that the Confidence score is below the state's threshold for assignment but above the threshold for creating a new state-assigned Id. | xs:normalizedString | |
StudentRequestParameters | C | Characteristics of the student identified by the district which the state uses to perform its matching logic. This element is used with the Student Identifier Service. | StudentParametersType | |
StaffRequestParameters | C | Characteristics of the staff person identified by the district which the state uses to perform its matching logic. This element is used with the Staff Identifier Service. | StaffParametersType |
Element/@Attribute | Char | Description | Type | |
---|---|---|---|---|
CancelTransaction | ||||
TransactionId | M | GUID that identifies the RequestIdentifier operation. | GUIDType | |
RequestingAgencyIds | O | List | ||
RequestingAgencyIds/RequestingAgencyId | OR | Identification of the agency and/or location requesting the state Id. Optional because the SIF zone infrastructure may provide adequate information for the state to ascertain the origin of the request. | xs:normalizedString | |
@ | Type | M | The functional level of the requesting agency. | values:
|
Element/@Attribute | Char | Description | Type | |
---|---|---|---|---|
CancelTransactionResponse | ||||
TransactionId | M | Echoes the cancelled TransactionId when successful. | GUIDType |
Element/@Attribute | Char | Description | Type | |
---|---|---|---|---|
AssignIdentifier | ||||
TransactionId | M | GUID that identifies the operation. | GUIDType | |
RequestingAgencyIds | O | List | ||
RequestingAgencyIds/RequestingAgencyId | OR | Identification of the agency and/or location requesting the state Id assignment. Optional because the SIF zone infrastructure may provide adequate information for the state to ascertain the origin of the request. | xs:normalizedString | |
@ | Type | M | The functional level of the requesting agency. | values:
|
Element/@Attribute | Char | Description | Type | |
---|---|---|---|---|
AssignIdentifierResponse | ||||
TransactionId | M | GUID that identifies the operation. | GUIDType | |
StateProvinceId | O | The assigned state student Id. | StateProvinceId | |
StudentReturnValues | C | The state may return any identified characteristics of the student as it sees fit. This element is used with the Student Identifier Service. | StudentParametersType | |
StaffReturnValues | C | The state may return any identified characteristics of the staff person as it sees fit. This element is used with the Staff Identifier Service. | StaffParametersType |
Element/@Attribute | Char | Description | Type | |
---|---|---|---|---|
ResolveIdentifier | ||||
TransactionId | M | GUID that identifies the operation. | GUIDType | |
RequestingAgencyIds | O | List | ||
RequestingAgencyIds/RequestingAgencyId | OR | Identification of the agency and/or location requesting the state Id resolution. Optional because the SIF zone infrastructure may provide adequate information for the state to ascertain the origin of the request. | xs:normalizedString | |
@ | Type | M | The functional level of the requesting agency. | values:
|
StateProvinceId | O | The state Id to associate with the student identified by Characteristics. | StateProvinceId | |
StudentRequestParameters | C | Characteristics of the student identified by the district which the state uses to perform its matching logic. This element is used with the Student Identifier Service. | StudentParametersType | |
StaffRequestParameters | C | Characteristics of the staff person identified by the district which the state uses to perform its matching logic. This element is used with the Staff Identifier Service. | StaffParametersType |
Element/@Attribute | Char | Description | Type | |
---|---|---|---|---|
ResolveIdentifierResponse | ||||
TransactionId | M | GUID that identifies the operation. | GUIDType | |
StateProvinceId | O | Echoes the supplied StateProvinceId. | StateProvinceId | |
StudentReturnValues | C | The state may return any identified characteristics of the student as it sees fit. This element is used with the Student Identifier Service. | StudentParametersType | |
StaffReturnValues | C | The state may return any identified characteristics of the staff person as it sees fit. This element is used with the Staff Identifier Service. | StaffParametersType |
Element/@Attribute | Char | Description | Type | |
---|---|---|---|---|
ReleaseIdentifier | ||||
RequestingAgencyIds | O | List | ||
RequestingAgencyIds/RequestingAgencyId | OR | Identification of the agency and/or location requesting the student be disassociated with the agency. Optional because the SIF zone infrastructure may provide adequate information for the state to ascertain the origin of the request. | xs:normalizedString | |
@ | Type | M | The functional level of the requesting agency. | values:
|
StateProvinceId | O | The state Id of the student that has left the district. | StateProvinceId |
Element/@Attribute | Char | Description | Type | |
---|---|---|---|---|
ReleaseIdentifierResponse | ||||
StateProvinceId | O | Echoes the supplied StateProvinceId. | StateProvinceId | |
StudentReturnValues | C | The state may return any identified characteristics of the student as it sees fit. This element is used with the Student Identifier Service. | StudentParametersType | |
StaffReturnValues | C | The state may return any identified characteristics of the staff person as it sees fit. This element is used with the Staff Identifier Service. | StaffParametersType |
Zone Service | Description |
serviceAssessmentProcessing | Recieves raw assessment results, creates scores, and reports scores to serviceAssessmentAdministration . |
serviceAssessmentAdministration | Administers assessments, submits raw data to serviceAssessmentProcessing , creates assement score sets, and reports scores to the Zone. |
The Assessment Services define the role of the assessment scoring system within the overall assessment process. The service interfaces encapsulate a process choreography and a set of data exchanges that are not restricted to object-level Request/Response or Change Event messages. They utilize the existing SIF Data Model with no extensions.
There are three different systems that are involved in scoring a student assessment.
The assessment process is designed to decouple these systems in time, so that no one system can block another. In brief, the choreography of the assessment process is:
serviceAssessmentAdministration
) gives assessments to students and collects their responses.serviceAssessmentProcessing
). A ServiceOutput message back to the OAS confirms their reception and acceptance.The exact system interaction during the assessment process is shown in the Collaboration Diagram below and described more fully in the following subsections.
Collaboration Diagram
Assessment results (responses then scores) for an administration are passed from one Online Assessment System Service to one or more Assessment Processing System Services, and then to a single SIS. The process flow is difficult to model without using Zone Services to hide the choreography and avoid bending infrastructure rules, since the SIS should not hold scores for any given administration of an assessment until all the related StudentResponseSets and AssessmentItems have been scored. This means the APS needs to be triggered only after all the responses for a given assessment administration have been committed; otherwise it will not know what comprises the complete set. Having the OAS issue a “ScoreItems” SIF Event wouldn’t be enough because the OAS needs to know that the assessment results have been stored correctly, but Events have no response, whereas ServiceInput requests do.
A ServiceInput message for the Assessment Processing System Service is sent to the zone. The request invokes the service operation ScoreItems. This request contains multiple packets of data and includes the AssessmentAdministration object, the raw responses of all of the students that took the assessment, and additional demographic data. It may or may not include a list of RefIds for the items to be scored by the receiving service.
The APS Service issues a ScoreItemsResponse ServiceOutput message which indicates the request was accepted, which the ZIS routes back to the OAS.
The OAS sends an ItemsScoredResponse ServiceOutput message acknowledging delivery of the scores.
The Assessment Services interface consists of two Methods and one Notification event.
Zone Service | Service Input | Service Output | Description |
serviceAssessmentProcessing | ScoreItems | ScoreItemsResponse | Initiated by an Online Assessment Zone Service after an assessment has been administered. |
serviceAssessmentAdministration | ItemsScored | ItemsScoredResponse | Initiated by an Assessment Processing Zone Service when the requested assessment items have been scored. |
Zone Service | Event | Description |
serviceAssessmentAdministration | AdministrationScored | Notification that an assessment administration has been scored. |
Element/@Attribute | Char | Description | Type | |
---|---|---|---|---|
ScoreItems | ||||
AssessmentAdministration | M | The AssessmentAdministration SIF Object. | AssessmentAdministration | |
AssessmentItemRefIds | O | List of RefIds. If not present score all items. | List | |
AssessmentItemRefIds/AssessmentItemRefId | OR | IdRefType of item to be scored by the targeted APS. | IdRefType | |
AssessmentResponseData | M | Grouping tag for the response data. | List | |
AssessmentResponseData/AssessmentResponseDataItem | MR | The detailed Score Data. Each AssessmentResponseData element contains object relating to the same student. A packet break can occur at the end of this element. | ||
AssessmentResponseData/AssessmentResponseDataItem/ AssessmentRegistration | M | Information about the student’s registration. | AssessmentRegistration | |
AssessmentResponseData/AssessmentResponseDataItem/ StudentResponseSet | M | The student’s responses. | StudentResponseSet | |
AssessmentResponseData/AssessmentResponseDataItem/ StudentSnapshot | O | Optional demographic information about the student at the time of the assessment. | StudentSnapshot |
Element/@Attribute | Char | Description | Type | |
---|---|---|---|---|
ScoreItemsResponse | ||||
Accepted | M | True or false (boolean) return value indicating whether the assessment processing service has accepted the task. | xs:boolean | |
Receipt | C | If accepted, a confirmation token, such as a confirmation number. | xs:token | |
Description | O | Description of additional information regarding the acceptance of this AssessmentAdministration. | xs:normalizedString |
Element/@Attribute | Char | Description | Type | |
---|---|---|---|---|
ItemsScored | ||||
AssessmentAdministration | M | The AssessmentAdministration SIF Object. | AssessmentAdministration | |
AssessmentResponseData | M | Grouping tag for the response data. | List | |
AssessmentResponseData/AssessmentResponseDataItem | MR | The detailed Score Data. Each AssessmentResponseData element contains object relating to the same student. A packet break can occur at the end of this element. | ||
AssessmentResponseData/AssessmentResponseDataItem/ AssessmentRegistration | M | Information about the student’s registration. | AssessmentRegistration | |
AssessmentResponseData/AssessmentResponseDataItem/ StudentResponseSet | M | The student’s responses. | StudentResponseSet | |
AssessmentResponseData/AssessmentResponseDataItem/ StudentSnapshot | O | Optional demographic information about the student at the time of the assessment. | StudentSnapshot |
Element/@Attribute | Char | Description | Type | |
---|---|---|---|---|
ItemsScoredResponse | ||||
Accepted | M | True or false (boolean) return value indicating whether the Online Assessment System has accepted the results. | xs:boolean | |
Receipt | C | If accepted, a confirmation token, such as a confirmation number. | xs:token | |
Description | O | Description of additional information regarding the acceptance of these scores. | xs:string |
Element/@Attribute | Char | Description | Type | |
---|---|---|---|---|
AdministrationScored | ||||
AssessmentAdministration | M | The AssessmentAdministration SIF Object. | AssessmentAdministration |
Zone Service | Description |
serviceSREBroker | Acts as an optional intermediary among publishers and consumers. |
serviceSREPublisher | Publishes student records. |
serviceSREConsumer | Requests and consumes student records. |
serviceSREAcademicRecordConsumer | A consumer of academic student records. |
serviceSREDemographicRecordConsumer | A consumer of demographic student records. |
serviceSRESpecialEducationRecordConsumer | A consumer of special education student records. |
Student Record Exchange (SRE) Services functionality is comprised of six SIF Zone Services that enable trading partners to publish, exchange, and consume electronic transcripts and student records over the SIF infrastructure. The services support both direct and brokered models of student record exchange.
The primary goals of the Student Record Exchange Services are:
To enable Student Record Exchange choreography between trading partners and brokers, accommodating all of the use cases identified by the Student Record Exchange Task Force. Using the set of core services defined here, an agent should be able to participate in any of these use cases without knowledge of how a broader student record exchange system is constructed or deployed.
To enable Student Record Exchange choreography in a way that can be accomplished with or without an intermediary broker. Brokers are used to conduct electronic transcript and student records transfer between trading partners that do not know of one another; for example, to implement LEA-to-LEA student transfer or LEA-to-Postsecondary transcript exchange.
Provide an unambiguous method of implementing the “last mile” of student record exchange – specifically LEA-to-LEA student records transfer – whereby applications that are authoritative for student records must also be able to consume those records.
The term trading partner in this document encompasses all types of organizations that might wish to participate in student record exchanges, including LEAs, SEAs, colleges and universities, non-educational organizations, and so on. Student Record Exchanges are carried out between trading partners. It’s important to keep in mind that a trading partner might represent more than one agency; for example, a data warehouse maintained by a SEA might contain transcript data for many students from many LEAs.
The term broker means an intermediary system that acts as a value-add intermediary between trading partners for the purpose of exchanging transcripts or student records. A broker may itself be considered a trading partner.
In this document, the term agency usually means an LEA. The sending agency is the LEA that is furnishing student records, and the receiving agency is the LEA that is receiving those records.
All service messages and objects defined in this document identify students and agencies by StateProvinceId.
A StateProvinceId is a unique identifier that is assigned outside the scope of SIF, typically by a state department of education. For students, the StateProvinceId can be obtained from the StudentPersonal/StateProvinceId element, as well as from the StudentRecordExchange/StateProvinceId element. For agencies that are represented by a LEAInfo object, it can be obtained from the LEAInfo/StateProvinceId element.
It is the responsibility of agents implementing these services to resolve StateProvinceId to a local identifier when needed. Further, because local identifiers are not unique outside of the organization that assigns them, it is not feasible to use local identifiers or SIF RefIds in student record exchange transactions, which span multiple trading partners. It is therefore assumed that any trading partner participating in a student record exchange program has obtained unique StateProvinceId identifiers for students involved in SRE transactions.
Student Record Exchange Services are divided into two categories: Transaction Services and Consumer Services.
Transaction Services allow trading partners to publish and receive StudentRecordExchange objects at the request of another trading partner or broker. They offer a transactional, service-oriented alternative to the data-oriented SIF_Request/SIF_Response model of exchanging data. Transaction Services are intended to be implemented by intermediary agents that collaborate to form a comprehensive student record exchange system; providers of student data such as SIS systems do not typically implement these services. Transaction Services include:
Consumer Services offer fine-grain control over importing student data into target systems such as SIS and special education packages. Whereas the Transaction Services deal in StudentRecordExchange objects, the optional Consumer Services each address a specific record type contained in that object. The services are organized by record type so that different consumer systems can import select parts of a StudentRecordExchange object independent of other consumers in a zone. Consumer Services are intended to be implemented by local providers of student data such as SIS systems. They include:
The minimum SIF_MaxBufferSize recommended for SIF Zone Services is 64K. In order for service messages to packetize StudentRecordExchangeData elements, the buffer size used must be large enough to accommodate the largest element of that object. StudentRecordPackage objects in particular can be larger than 64K if they contain Base64-encoded binary files such as photographs and documents that are transmitted with a student’s transcript or records.
Each service method defined here accepts a minimum of three input parameters: StudentId, SendingAgencyId, and ReceivingAgencyId. While these parameters are sufficient for all implementations to identify the student and agencies involved in a student record exchange, systems may need to be able to convey additional vendor-specific parameters. The optional ExtendedParameters element can be used for this purpose.
In much the same way as SIF Vertical Reporting solutions rely on intermediary agents that collaborate to implement the overall vertical reporting choreography, a comprehensive student record exchange solution will also make use of intermediary agents in most cases. For example, a commercial state-wide solution might employ several components that collaborate to implement electronic transcript and student records transfer:
While the Student Record Exchange Services defined here do not require intermediary agents – any two agents that implement the SRE Publisher and SRE Consumer services can directly exchange student records – they are designed to not only accommodate but to promote their use.
There are numerous benefits to using intermediary agents. First and foremost, intermediary agents remove the burden of specializing in Student Record Exchange choreography from the broader audience of SIF Agents. By implementing only the SRE Student Demographic Record Consumer service, for example, a student information system SIF Agent can participate in basic LEA-to-LEA student records transfer without the vendor having to know anything about how the overall system is implemented (which may vary widely from state to state). This is particularly important in realizing widespread adoption of student record exchange capabilities in the marketplace.
Another important benefit to using intermediary agents is that they make it possible to build a comprehensive student record exchange solution with a consistent feature set, user experience, and level of service regardless of the mix of SIF Agents that are used in the overall solution.
Figure 1 illustrates the use of intermediary agents in an overall student record exchange solution:
The SRE Transaction Services are comprised of the SRE Publisher, SRE Consumer, and SRE Broker services.
The SRE Publisher and SRE Consumer services allow for direct exchange of student records between trading partners or the indirect exchange between trading partners and a broker. The SRE Publisher service represents a trading partner that can furnish student records. Its GetRecordExchange method is called to request the records for a given student and sending agency. The SRE Consumer service represents a trading partner that can consume student records. Its SetRecordExchange method is called to “push” student records to the trading partner. It is worth repeating here that trading partners do not always represent LEAs, nor do they always represent the ultimate source or destination of data. A state department of education, for example, might act as a trading partner to furnish student records from a data warehouse. In this scenario the SEA might implement both the SRE Publisher and SRE Consumer services (in addition to LEAs implementing these services as well).
The SRE Broker service allows for brokered exchanges between trading partners that do not know of one another. Its GetRecordExchange method is called to request that records be retrieved for a given student and sending agency. Depending on the business rules and capabilities of the overall student record exchange system, a transaction with a broker can move data from a sending agency to a receiving agency either at the request of the sender or at the request of the receiver. Initiating a request from the receiving agency is by far the most common scenario.
When a trading partner wishes to request a StudentRecordExchange object set from another trading partner, it calls the GetRecordExchange method of the SRE Publisher service. The method parameters include:
The SRE Publisher service returns a SIF_ServiceOutput message that contains a StudentRecordExchange object set, or in the case of error, a SIF_Error element. The entire set of student records is returned as the single response to this method invocation. Because StudentRecordExchanges can be very large in size, the results may span multiple packets. The packetizing rules described by SIF Zone Services apply.
Figure 3 illustrates a requestor calling the GetRecordExchange method of a publisher agent that implements the SRE Publisher service (step 1). The publisher agent issues SIF_Requests to its local zone to construct a StudentRecordExchange object set (step 2) or otherwise obtains the data according to its business rules. The results are returned back to the requesting agent (step 3).
When a trading partner wishes to request a StudentRecordExchange object set from a broker, it calls the GetRecordExchange method of the SRE Broker service. The method parameters include:
The broker works with the SRE Publisher service of the trading partner representing the sending agency in order to obtain the requested data. The trading partner that’s contacted by the broker could be the LEA identified as the sending agency, or it could be a third party such as a data warehouse hosted by a SEA or other service provider. It is also possible that the broker itself can supply the student’s data from a local repository.
When the student’s records are available for delivery back to the requestor, or if the transaction has failed with an error, the broker responds with a SIF_ServiceOutput message that contains either a set of StudentRecordExchange objects or a SIF_Error element with error information. The entire set of student records is returned as the single response to this method invocation. Because StudentRecordExchanges can be very large in size, the results may span multiple packets. The packetizing rules described by SIF Zone Services apply.
If the broker cannot satisfy the request for any reason, it responds with a SIF_ServiceOutput message with a SIF_Error element. Possible reasons for failure include: the broker does not know how to get in touch with a trading partner representing the sending agency; that trading partner does not implement the SRE Publisher service; a communication error occurred while calling the SRE Publisher service of the trading partner; the service input parameters are invalid; and so on.
Figure 4 illustrates a requestor calling the GetRecordExchange service method of a broker agent, which implements the SRE Broker service (step 1). The broker then calls the GetRecordExchange service method of a publisher agent that implements the SRE Publisher service to obtain student records (step 2). The publisher agent issues SIF_Requests to its local zone to construct a StudentRecordExchange object set (step 3) or otherwise obtains the data according to its business rules. The results are returned back to the broker agent (step 4), and then back to the requestor (step 5).
A common feature of commercial broker solutions is to provide a central user interface from which registrars manage electronic transcript and student record exchanges. Such brokers can act as the initiator of end-to-end student record exchanges, and therefore require a way to deliver student records to a receiving agency without the receiving agency having previously requested of those records. The SRE Consumer service enables this interaction.
When a broker wishes to perform an end-to-end student record exchange, it first interacts with the SRE Publisher service of the trading partner representing the sending agency in order to obtain the student’s records. The trading partner that’s contacted by the broker could be the LEA identified as the sending agency, or it could be a third party such as a data warehouse hosted by a SEA or other service provider. It is also possible that the broker itself can supply the student’s data from a local repository.
When the student’s records are available for delivery, the broker calls the SetRecordExchange method of the SRE Consumer service of the trading partner that represents the receiving agency. If the receiving agency does not implement the SRE Consumer service, it does not accept unrequested student record exchanges.
The method parameters include:
The entire set of student records is provided as a parameter to the method. Because StudentRecordExchanges can be very large in size, the method invocation may span multiple SIF_ServiceInput packets. The packetizing rules described by SIF Zone Services apply.
Figure 5 illustrates a broker calling the GetRecordExchange method of a publisher agent at the sending agency, which implements the SRE Publisher service (step 1). The publisher agent issues SIF_Requests to its local zone to construct a StudentRecordExchange object set (step 2) or otherwise obtains the data according to its business rules. The results are returned back to the broker agent (step 3). The broker then calls the SetRecordExchange method of a consumer agent at the receiving agency (step 4) to deliver the data to its destination. No data is returned in the response to this method (step 5), but it may contain a SIF_Error if an error occurred at the receiving agency.
Whereas the Transaction Services above describe how to move student data between trading partners and brokers, the optional Consumer Services define how to consume or import student record exchange data into target systems such as student information systems. Agents that implement the Consumer Services unambiguously declare that they can consume StudentRecordExchange data in whole or part.
The StudentRecordExchange object is designed as a content package. It is comprised of several types of records (e.g. StudentDemographicRecord, StudentAcademicRecord, etc.), each of which may be provided by a different authoritative source in a zone. When consuming StudentRecordExchange data into a zone, then, it is possible that different systems will be interested in different parts of that content package. An SIS may need to import the StudentDemographicRecord into its database, and a separate special education package import StudentSpecialEducationRecord.
Consumer Services are comprised of:
All SIF Agents that supply student demographic, academic, or special education records are encouraged to implement the appropriate Consumer Services. Doing so enables the agent to participate in state-wide student record exchange initiatives, particularly LEA-to-LEA student transfer. In addition, these agents are encouraged to provide SIF_Request support for the applicable StudentDemograpicRecord, StudentAcadmicRecord, or StudentSpecialEducationRecord objects that apply to them. Doing so will make it considerably easier for intermediary publisher agents (i.e. those that implement the SRE Publisher service) to obtain the data needed to satisfy a request.
If an application is capable of consuming an entire StudentRecordExchange object, it can do so via the SRE Consumer service and choose to not implement the individual record-specific Consumer Services. However, as most applications are only interested or capable of processing a subset of StudentRecordExchange, each should implement the specific Consumer Services that it supports as a best practice. This makes it clear the role each SIF Agent in a zone plays in consuming StudentRecordExchange data. It should also be noted that the SRE Consumer service is part of Transaction Services, which are intended to be implemented by intermediary agents in a comprehensive student record exchange solution. It is therefore envisioned that intermediary agents will implement the SRE Consumer service, delegating to the various Consumer Services in a zone to actually import data into target systems.
When an intermediary agent that implements the SRE Consumer service receives a StudentRecordExchange object set and wishes to import the data into target systems, it follows the rules below.
By employing these rules, it is possible for system integrators to install consumer agents of various types in a local district zone, such that each agent can import all or part of a StudentRecordExchange object set received as part of a larger student record exchange transaction. Agents that wish to import all of a StudentRecordExchange object set can implement the single SRE Consumer service instead of the individual record-level Consumer Services. Agents that wish to import StudentRecordPackage data, for which no Consumer Service exists, should also implement the SRE Consumer service.
For each local zone the intermediary agent is connected to:
Figure 7 illustrates how the Consumer Services can be employed in a comprehensive student record exchange solution to import data received from an intermediary agent into target applications like the student information system. Here, the LEA-to-LEA Student Records Transfer use case is demonstrated.
A consumer agent at the receiving agency calls the GetRecordExchange method of the broker agent’s SRE Broker service (step 1). Student records are obtained from a publisher agent at the sending agency via the SRE Publisher service (step 2). The publisher agent issues SIF_Requests to its local zone to construct a StudentRecordExchange object set (step 3) and returns the data back to the requestor (step 4 and 5). The consumer agent then consults the SIF_ZoneStatus object of its local district zone and learns that two applications are capable of consuming student record exchange data. It asks the student information system’s agent, which implements the SRE Student Demographic Record Consumer and SRE Student Academic Record Consumer services, to import those portions of the student data (step 6 and 7). Next, it asks the special education package, which implements the SRE Student Special Education RecordConsumer service, to import the special education record (step 8).
Figure 8 depicts a variation of the above, where the SIS Agent implements the SRE Consumer service instead of the individual record-level Consumer Services. It might do this, for example, if it needs to process StudentRecordPackage data, for which no record-level Consumer Service exists.
Zone Service | Service Input | Service Output | Description |
serviceSREBroker | GetRecordExchange | GetRecordExchangeResponse | Requests from the broker a StudentRecordExchange object set for a given student and sending agency. |
Zone Service | Service Input | Service Output | Description |
serviceSREPublisher | GetRecordExchange | GetRecordExchangeResponse | Requests that a StudentRecordExchange object set be published for a given student and sending agency. A Packet break can occur at the end of the StudentRecordExchangeData element in GetRecordExchangeResponse. |
Zone Service | Service Input | Service Output | Description |
serviceSREConsumer | SetRecordExchange | SetRecordExchangeResponse | Requests that a StudentRecordExchange object set be consumed by a receiving agency. For example, if a broker initiates an exchange between a sending agency and a receiving agency, it uses this service to deliver the results to the receiving agency. A Packet break can occur at the end of the StudentRecordExchangeData element in SetRecordExchange. |
Zone Service | Service Input | Service Output | Description |
serviceSREAcademicRecordConsumer | SetAcademicRecord | SetAcademicRecordResponse | Requests that a StudentAcademicRecord object for a given student be consumed. |
Zone Service | Service Input | Service Output | Description |
serviceSREDemographicRecordConsumer | SetDemographicRecord | SetDemographicRecordResponse | Requests that a StudentDemographicRecord object for a given student be consumed. |
Zone Service | Service Input | Service Output | Description |
serviceSRESpecialEducationRecordConsumer | SetSpecialEducationRecord | SetSpecialEducationRecordResponse | Requests that a StudentSpecialEducationRecord object for a given student be consumed. |
Element/@Attribute | Char | Description | Type | |
---|---|---|---|---|
GetRecordExchange | ||||
StudentId | M | The StateProvinceId of the student | StateProvinceId | |
SendingAgencyId | M | The StateProvinceId of the sending agency | StateProvinceId | |
ReceivingAgencyId | M | The StateProvinceId of the receiving agency | StateProvinceId | |
ExtendedParameters | O | Optional list of additional implementation-dependent parameters | ExtendedParameters |
Element/@Attribute | Char | Description | Type | |
---|---|---|---|---|
GetRecordExchangeResponse | ||||
StudentRecordExchangeDataList | M | The StudentRecordExchange object set for the student and sending agency that was requested by the GetRecordExchange method. The object set is contained in a composite StudentRecordExchangeData object. To allow for packetizing of StudentRecordExchange object sets, there should be one instance of the StudentRecordExchangeData object for each object it contains. | StudentRecordExchangeDataList |
Element/@Attribute | Char | Description | Type | |
---|---|---|---|---|
SetRecordExchange | ||||
StudentId | M | The StateProvinceId of the student. In the case where a SIF_ServiceInput message spans multiple packets, each packet must provide this element. | StateProvinceId | |
SendingAgencyId | M | The StateProvinceId of the sending agency. In the case where a SIF_ServiceInput message spans multiple packets, each packet must provide this element. | StateProvinceId | |
ReceivingAgencyId | M | The StateProvinceId of the receiving agency. In the case where a SIF_ServiceInput message spans multiple packets, each packet must provide this element. | StateProvinceId | |
ExtendedParameters | O | Optional list of additional implementation-dependent parameters | ExtendedParameters | |
StudentRecordExchangeDataList | M | The StudentRecordExchange object set for a single student and sending agency. The object set is contained in a composite StudentRecordExchangeData object. To allow for packetizing of StudentRecordExchange object sets, there should be one instance of the StudentRecordExchangeData object for each object it contains. | StudentRecordExchangeDataList |
The SetRecordExchange service method does not return any data as a result. However, to allow for error information to be relayed back to the caller of the method, an object is defined. If the SetRecordExchange method is successful, the SIF_ServiceOutput message will contain an empty object. If an error occurred, the SIF_ServiceOutput message will contain a SIF_Error element that describes the error condition.
Element/@Attribute | Char | Description | Type | |
---|---|---|---|---|
SetRecordExchangeResponse | This object is empty. | xs:normalizedString |
Element/@Attribute | Char | Description | Type | |
---|---|---|---|---|
SetAcademicRecord | ||||
StudentId | M | The StateProvinceId of the student. In the case where a SIF_ServiceInput message spans multiple packets, each packet must provide this element. | StateProvinceId | |
SendingAgencyId | M | The StateProvinceId of the sending agency. In the case where a SIF_ServiceInput message spans multiple packets, each packet must provide this element. | StateProvinceId | |
ReceivingAgencyId | M | The StateProvinceId of the receiving agency. In the case where a SIF_ServiceInput message spans multiple packets, each packet must provide this element. | StateProvinceId | |
ExtendedParameters | O | Optional list of additional implementation-dependent parameters | ExtendedParameters | |
StudentAcademicRecord | M | StudentAcademicRecord |
This object is empty.
Element/@Attribute | Char | Description | Type | |
---|---|---|---|---|
SetAcademicRecordResponse | This object is empty. | xs:normalizedString |
Element/@Attribute | Char | Description | Type | |
---|---|---|---|---|
SetDemographicRecord | ||||
StudentId | M | The StateProvinceId of the student. In the case where a SIF_ServiceInput message spans multiple packets, each packet must provide this element. | StateProvinceId | |
SendingAgencyId | M | The StateProvinceId of the sending agency. In the case where a SIF_ServiceInput message spans multiple packets, each packet must provide this element. | StateProvinceId | |
ReceivingAgencyId | M | The StateProvinceId of the receiving agency. In the case where a SIF_ServiceInput message spans multiple packets, each packet must provide this element. | StateProvinceId | |
ExtendedParameters | O | Optional list of additional implementation-dependent parameters | ExtendedParameters | |
StudentDemographicRecord | M | StudentDemographicRecord |
This object is empty.
Element/@Attribute | Char | Description | Type | |
---|---|---|---|---|
SetDemographicRecordResponse | This object is empty. | xs:normalizedString |
Element/@Attribute | Char | Description | Type | |
---|---|---|---|---|
SetSpecialEducationRecord | ||||
StudentId | M | The StateProvinceId of the student. In the case where a SIF_ServiceInput message spans multiple packets, each packet must provide this element. | StateProvinceId | |
SendingAgencyId | M | The StateProvinceId of the sending agency. In the case where a SIF_ServiceInput message spans multiple packets, each packet must provide this element. | StateProvinceId | |
ReceivingAgencyId | M | The StateProvinceId of the receiving agency. In the case where a SIF_ServiceInput message spans multiple packets, each packet must provide this element. | StateProvinceId | |
ExtendedParameters | O | Optional list of additional implementation-dependent parameters | ExtendedParameters | |
StudentSpecialEducationRecord | M | StudentSpecialEducationRecord |
This object is empty.
Element/@Attribute | Char | Description | Type | |
---|---|---|---|---|
SetSpecialEducationRecordResponse | This object is empty. | xs:normalizedString |