7 Zone Services

7.1 Introduction

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.

7.1.1 Important Terms

The following terms will be used throughout the rest of this section. Wherever possible, they reflect common industry usage and consensus.

7.1.1.1 Service

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.

7.1.1.2 SIF Object Provider Service

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.

7.1.1.3 SIF Zone Service

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:

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.

7.1.2 New Message Types

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.

7.1.2.1 Service Input

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.

7.1.2.2 Service Output

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.

7.1.2.3 Service Notify

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.

7.1.3 SIF Design Requirements for Zone Service Technology

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:

7.1.4 Zone Service Design Best Practices

Best practices for designing a Zone Service include:

7.1.4.1 Error Handling

7.1.4.2 Data Model Reuse

7.1.4.3 General Zone Service Guidelines

7.1.5 Zone Service Usage Best Practices

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.

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.

7.2 Agency Identifier Services

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.

7.2.1 Interface Overview

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.

7.2.1.1 Use Case: Initial Agency Student Id Assignment

This use case process describes the Zone Service choreography used in support of state Id assignment to an enrolling student.

7.2.2 Zone Service Operations

7.2.2.1 Student Identifier Request

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.

7.2.2.2 Student Identifier Management

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.

7.2.2.3 Staff Identifier Request

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.

7.2.2.4 Staff Identifier Management

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.

7.2.3 Service Body Definitions

7.2.3.1 RequestIdentifier

RequestIdentifier
Figure 7.2.3.1-1: RequestIdentifier RequestIdentifier TransactionId RequestingAgencyIds RequestingAgencyId Type MinimumConfidence StudentRequestParameters StaffRequestParameters
 Element/@AttributeCharDescriptionType
 RequestIdentifier   
 TransactionIdM

GUID that identifies the RequestIdentifier operation.

 
GUIDType
 RequestingAgencyIdsO

 

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
@TypeM

The functional level of the requesting agency.

 
values:
ESA
Educational Services Agency
LEA
Local Educational Agency (District)
School
School
 MinimumConfidenceO

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
 StudentRequestParametersC

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
 StaffRequestParametersC

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
Table 7.2.3.1-1: RequestIdentifier
<RequestIdentifier> <TransactionId>925F065B5140416498B9A510131D6434</TransactionId> <RequestingAgencyIds> <RequestingAgencyId Type="LEA">98</RequestingAgencyId> <RequestingAgencyId Type="School">1010</RequestingAgencyId> </RequestingAgencyIds> <StudentRequestParameters> <LocalId>123456</LocalId> <Names> <Name Type="04"> <LastName>Doe</LastName> <FirstName>Cameron</FirstName> <MiddleName>K</MiddleName> </Name> </Names> <Demographics> <RaceList> <Race> <Code>1002</Code> <Proportion>75</Proportion> </Race> <Race> <Code>0999</Code> <Proportion>25</Proportion> </Race> </RaceList> <Gender>F</Gender> <BirthDate>1989-01-02</BirthDate> <PlaceOfBirth>Miami</PlaceOfBirth> <CountyOfBirth>Date</CountyOfBirth> <StateOfBirth>FL</StateOfBirth> <CountryOfBirth>US</CountryOfBirth> <CountriesOfCitizenship> <CountryOfCitizenship>US</CountryOfCitizenship> </CountriesOfCitizenship> </Demographics> <Contacts> <Contact> <Relationship> <Code>1735</Code> </Relationship> <Names> <Name Type="04"> <LastName>Fung</LastName> <FirstName>Connie</FirstName> </Name> </Names> <EducationalLevel>1050</EducationalLevel> </Contact> </Contacts> <EffectiveDate>2003-08-01</EffectiveDate> </StudentRequestParameters> </RequestIdentifier>
Example 7.2.3.1-1: RequestIdentifier

7.2.3.2 RequestIdentifierResponse

RequestIdentifierResponse
Figure 7.2.3.2-1: RequestIdentifierResponse RequestIdentifierResponse IdStatus TransactionId StateProvinceId Confidence StudentRequestParameters StaffRequestParameters
 Element/@AttributeCharDescriptionType
 RequestIdentifierResponse   
@IdStatusMStatus of the match. values:
Valid
Marks a response from the state with a valid StateProvinceId. If the request included Characteristics/StateProvinceId, the value of StateProvinceId in the response could be different.
Ambiguous
Marks a response where the state couldn't uniquely identify the student based on the information provided. The state may respond to the request with a single Match marked "Ambiguous" and an empty StateProvinceId. Alternatively, the state response may include one or more Match elements with candidate matches. Each of these elements would be marked "Ambiguous," and populated per the particular state's policies. StateProvinceId should not be empty in these elements.
 TransactionIdM

GUID that identifies the RequestIdentifier operation.

 
GUIDType
 StateProvinceIdO

The identified state student Id. Must be empty when there are no matches (a single Match marked Ambiguous).

 
StateProvinceId
 ConfidenceO

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
 StudentRequestParametersC

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
 StaffRequestParametersC

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
Table 7.2.3.2-1: RequestIdentifierResponse
<RequestIdentifierResponse IdStatus="Valid"> <TransactionId>925F065B5140416498B9A510131D6434</TransactionId> <StateProvinceId>98765</StateProvinceId> </RequestIdentifierResponse>
Example 7.2.3.2-1: RequestIdentifierResponse

7.2.3.3 CancelTransaction

CancelTransaction
Figure 7.2.3.3-1: CancelTransaction CancelTransaction TransactionId RequestingAgencyIds RequestingAgencyId Type
 Element/@AttributeCharDescriptionType
 CancelTransaction   
 TransactionIdM

GUID that identifies the RequestIdentifier operation.

 
GUIDType
 RequestingAgencyIdsO

 

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
@TypeM

The functional level of the requesting agency.

 
values:
ESA
Educational Services Agency
LEA
Local Educational Agency (District)
School
School
Table 7.2.3.3-1: CancelTransaction
<CancelTransaction> <TransactionId>BD126823C6634562A55BA1C7FCD47961</TransactionId> <RequestingAgencyIds> <RequestingAgencyId Type="LEA">98</RequestingAgencyId> <RequestingAgencyId Type="School">1010</RequestingAgencyId> </RequestingAgencyIds> </CancelTransaction>
Example 7.2.3.3-1: CancelTransaction

7.2.3.4 CancelTransactionResponse

CancelTransactionResponse
Figure 7.2.3.4-1: CancelTransactionResponse CancelTransactionResponse TransactionId
 Element/@AttributeCharDescriptionType
 CancelTransactionResponse   
 TransactionIdM

Echoes the cancelled TransactionId when successful.

 
GUIDType
Table 7.2.3.4-1: CancelTransactionResponse
<CancelTransactionResponse> <TransactionId>BD126823C6634562A55BA1C7FCD47961</TransactionId> </CancelTransactionResponse>
Example 7.2.3.4-1: CancelTransactionResponse

7.2.3.5 AssignIdentifier

AssignIdentifier
Figure 7.2.3.5-1: AssignIdentifier AssignIdentifier TransactionId RequestingAgencyIds RequestingAgencyId Type
 Element/@AttributeCharDescriptionType
 AssignIdentifier   
 TransactionIdM

GUID that identifies the operation.

 
GUIDType
 RequestingAgencyIdsO

 

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
@TypeM

The functional level of the requesting agency.

 
values:
ESA
Educational Services Agency
LEA
Local Educational Agency (District)
School
School
Table 7.2.3.5-1: AssignIdentifier
<AssignIdentifier> <RequestingAgencyIds> <RequestingAgencyId Type="LEA">98</RequestingAgencyId> <RequestingAgencyId Type="School">1010</RequestingAgencyId> </RequestingAgencyIds> </AssignIdentifier>
Example 7.2.3.5-1: AssignIdentifier

7.2.3.6 AssignIdentifierResponse

AssignIdentifierResponse
Figure 7.2.3.6-1: AssignIdentifierResponse AssignIdentifierResponse TransactionId StateProvinceId StudentReturnValues StaffReturnValues
 Element/@AttributeCharDescriptionType
 AssignIdentifierResponse   
 TransactionIdM

GUID that identifies the operation.

 
GUIDType
 StateProvinceIdO

The assigned state student Id.

 
StateProvinceId
 StudentReturnValuesC

The state may return any identified characteristics of the student as it sees fit. This element is used with the Student Identifier Service.

 
StudentParametersType
 StaffReturnValuesC

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
Table 7.2.3.6-1: AssignIdentifierResponse
<AssignIdentifierResponse> <StateProvinceId>98766</StateProvinceId> </AssignIdentifierResponse>
Example 7.2.3.6-1: AssignIdentifierResponse

7.2.3.7 ResolveIdentifier

ResolveIdentifier
Figure 7.2.3.7-1: ResolveIdentifier ResolveIdentifier TransactionId RequestingAgencyIds RequestingAgencyId Type StateProvinceId StudentRequestParameters StaffRequestParameters
 Element/@AttributeCharDescriptionType
 ResolveIdentifier   
 TransactionIdM

GUID that identifies the operation.

 
GUIDType
 RequestingAgencyIdsO

 

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
@TypeM

The functional level of the requesting agency.

 
values:
ESA
Educational Services Agency
LEA
Local Educational Agency (District)
School
School
 StateProvinceIdO

The state Id to associate with the student identified by Characteristics.

 
StateProvinceId
 StudentRequestParametersC

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
 StaffRequestParametersC

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
Table 7.2.3.7-1: ResolveIdentifier
<ResolveIdentifier> <RequestingAgencyIds> <RequestingAgencyId Type="LEA">98</RequestingAgencyId> <RequestingAgencyId Type="School">1010</RequestingAgencyId> </RequestingAgencyIds> <StateProvinceId>98765</StateProvinceId> <StudentRequestParameters> <LocalId>123456</LocalId> <Names> <Name Type="04"> <LastName>Doe</LastName> <FirstName>Cameron</FirstName> <MiddleName>K</MiddleName> </Name> </Names> <Demographics> <RaceList> <Race> <Code>1002</Code> <Proportion>75</Proportion> </Race> <Race> <Code>0999</Code> <Proportion>25</Proportion> </Race> </RaceList> <Gender>F</Gender> <BirthDate>1989-01-02</BirthDate> <PlaceOfBirth>Miami</PlaceOfBirth> <CountyOfBirth>Date</CountyOfBirth> <StateOfBirth>FL</StateOfBirth> <CountryOfBirth>US</CountryOfBirth> <CountriesOfCitizenship> <CountryOfCitizenship>US</CountryOfCitizenship> </CountriesOfCitizenship> </Demographics> <Contacts> <Contact> <Relationship> <Code>1735</Code> </Relationship> <Names> <Name Type="04"> <LastName>Fung</LastName> <FirstName>Connie</FirstName> </Name> </Names> <EducationalLevel>1050</EducationalLevel> </Contact> </Contacts> <EffectiveDate>2003-08-01</EffectiveDate> </StudentRequestParameters> </ResolveIdentifier>
Example 7.2.3.7-1: ResolveIdentifier

7.2.3.8 ResolveIdentifierResponse

ResolveIdentifierResponse
Figure 7.2.3.8-1: ResolveIdentifierResponse ResolveIdentifierResponse TransactionId StateProvinceId StudentReturnValues StaffReturnValues
 Element/@AttributeCharDescriptionType
 ResolveIdentifierResponse   
 TransactionIdM

GUID that identifies the operation.

 
GUIDType
 StateProvinceIdO

Echoes the supplied StateProvinceId.

 
StateProvinceId
 StudentReturnValuesC

The state may return any identified characteristics of the student as it sees fit. This element is used with the Student Identifier Service.

 
StudentParametersType
 StaffReturnValuesC

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
Table 7.2.3.8-1: ResolveIdentifierResponse
<ResolveIdentifierResponse> <StateProvinceId>98766</StateProvinceId> </ResolveIdentifierResponse>
Example 7.2.3.8-1: ResolveIdentifierResponse

7.2.3.9 ReleaseIdentifier

ReleaseIdentifier
Figure 7.2.3.9-1: ReleaseIdentifier ReleaseIdentifier RequestingAgencyIds RequestingAgencyId Type StateProvinceId
 Element/@AttributeCharDescriptionType
 ReleaseIdentifier   
 RequestingAgencyIdsO

 

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
@TypeM

The functional level of the requesting agency.

 
values:
ESA
Educational Services Agency
LEA
Local Educational Agency (District)
School
School
 StateProvinceIdO

The state Id of the student that has left the district.

 
StateProvinceId
Table 7.2.3.9-1: ReleaseIdentifier
<ReleaseIdentifier> <RequestingAgencyIds> <RequestingAgencyId Type="LEA">98</RequestingAgencyId> <RequestingAgencyId Type="School">1010</RequestingAgencyId> </RequestingAgencyIds> <StateProvinceId>98765</StateProvinceId> </ReleaseIdentifier>
Example 7.2.3.9-1: ReleaseIdentifier

7.2.3.10 ReleaseIdentifierResponse

ReleaseIdentifierResponse
Figure 7.2.3.10-1: ReleaseIdentifierResponse ReleaseIdentifierResponse StateProvinceId StudentReturnValues StaffReturnValues
 Element/@AttributeCharDescriptionType
 ReleaseIdentifierResponse   
 StateProvinceIdO

Echoes the supplied StateProvinceId.

 
StateProvinceId
 StudentReturnValuesC

The state may return any identified characteristics of the student as it sees fit. This element is used with the Student Identifier Service.

 
StudentParametersType
 StaffReturnValuesC

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
Table 7.2.3.10-1: ReleaseIdentifierResponse
<ReleaseIdentifierResponse> <StateProvinceId>98766</StateProvinceId> </ReleaseIdentifierResponse>
Example 7.2.3.10-1: ReleaseIdentifierResponse

7.3 Assessment Services

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.

7.3.1 Student Assessment Process

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:

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

7.3.1.1 Process Details

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.

7.3.1.2 Communication of the collected responses to the system(s) responsible for their scoring.

  1. The OAS administers an assessment to a set of students, capturing the raw student responses.
  2. The OAS submits the raw responses to one or more Assessment Processing System Service(s).

    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.

  3. The ZIS forwards the ServiceInput message to the APS agent that provides the Assessment Processing System Service.
  4. The APS Service responds with the ScoreItemsResponse packet.

The APS Service issues a ScoreItemsResponse ServiceOutput message which indicates the request was accepted, which the ZIS routes back to the OAS.

7.3.1.3 Communication of the items' scores 'back' to the OAS.

  1. The APS processes the raw responses and calculates scores for each specified item.
  2. The APS Service issues an ItemsScored ServiceInput message to the OAS that carries the item scores for the targeted responses. The OAS processes the updated StudentResponseSet to add the ItemScores to its data.

The OAS sends an ItemsScoredResponse ServiceOutput message acknowledging delivery of the scores.

7.3.1.4 Communication of the scores to the system responsible for reporting.

  1. The OAS combines the item scores and calculates score totals for each student.
  2. The OAS Service publishes an AdministrationScored Service Notification message to the zone which indicates to subscribers that a complete assessment administration has been scored and includes the AssessmentAdministration SIF object.
  3. The SIS requests the results from the OAS (by equating the SIF_DestinationId to the SIFSourceId of the AdministrationScored Notification ) using a SIF_Request which specifies the AssessmentAdministrationRefId.
  4. The OAS Service returns the results in a Response message and the SIS stores the results.

7.3.2 Service Interfaces

The Assessment Services interface consists of two Methods and one Notification event.

7.3.2.1 Zone Service Operations

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.

7.3.2.2 Zone Service Notifications

Zone Service Event Description
serviceAssessmentAdministration AdministrationScored Notification that an assessment administration has been scored.

7.3.3 Service Body Definitions

7.3.3.1 ScoreItems

ScoreItems
Figure 7.3.3.1-1: ScoreItems ScoreItems AssessmentAdministration AssessmentItemRefIds AssessmentItemRefId AssessmentResponseData AssessmentResponseDataItem AssessmentRegistration StudentResponseSet StudentSnapshot
 Element/@AttributeCharDescriptionType
 ScoreItems   
 AssessmentAdministrationM

The AssessmentAdministration SIF Object.

 
AssessmentAdministration
 AssessmentItemRefIdsO

List of RefIds. If not present score all items.

 
List
 AssessmentItemRefIds/AssessmentItemRefId
     
OR

IdRefType of item to be scored by the targeted APS.

 
IdRefType
 AssessmentResponseDataM

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
Table 7.3.3.1-1: ScoreItems
<ScoreItems> <AssessmentAdministration RefId="E2E8045FD8884745AC588F1DDDBEE864" AssessmentFormRefId="78DA3F367AAE4E34995CE15530F531CC"> <SpecialConditions> <SpecialCondition Code="25B">Fire drill during test.</SpecialCondition> </SpecialConditions> <AdministrationDateTime>2006-03-06T14:30:00-05:00</AdministrationDateTime> <FinishDateTime>2006-03-06T15:30:00-05:00</FinishDateTime> </AssessmentAdministration> <AssessmentItemRefIds> <AssessmentItemRefId>1654865135184ABC4584684832B5B5AA</AssessmentItemRefId> <AssessmentItemRefId>9815ABF3186842DCA561138BBFF56581</AssessmentItemRefId> </AssessmentItemRefIds> <AssessmentResponseData> <AssessmentResponseDataItem> <AssessmentRegistration RefId="84243B2716EA4A68889B57A07E3707C9" StudentPersonalRefId="0D015F74DAB645FD92EFA8F43F2D79C3" AssessmentAdministrationRefId="6B08DF6E158941D9B8206D16E1FA6219"> <CreationDateTime>2006-03-05T09:30:00-05:00</CreationDateTime> <StudentSpecialConditions> <StudentSpecialCondition Code="45C">Student became ill during test.</StudentSpecialCondition> </StudentSpecialConditions> <StudentGradeLevel> <Code>04</Code> </StudentGradeLevel> <AssessmentGradeLevel> <Code>03</Code> </AssessmentGradeLevel> </AssessmentRegistration> <StudentResponseSet RefId="0D015F74DAB645FD92EFA8F43F2D79C3" AssessmentAdministrationRefId="BB181B05598C46D2B8D533483D91392E" StudentPersonalRefId="8F0934CC2F0448F8BBD788AA1ADE691B"> <Items> <Item> <Response>C</Response> <ResponseLocation>http://assessments-r-us.com/29834928374/2394/response.html</ResponseLocation> <ResponseStatus>Incomplete</ResponseStatus> <ResponseTime>PT32S</ResponseTime> <ItemNumber>27</ItemNumber> <ItemName>Writing Sample 1</ItemName> <DiagnosticStatement>Shows ability to determine symmetry</DiagnosticStatement> <NumberOfAttempts>2</NumberOfAttempts> </Item> </Items> </StudentResponseSet> <StudentSnapshot SnapDate="2003-10-01" StudentPersonalRefId="A15484ED564995254A4568EFFC5100BD" SchoolYear="2004"> <IDEA>No</IDEA> <Migrant>No</Migrant> <Title1>Yes</Title1> <GiftedTalented>No</GiftedTalented> <EconomicDisadvantage>Yes</EconomicDisadvantage> <ELL>No</ELL> <Homeless>No</Homeless> <Section504>No</Section504> <VocationalConcentrator>No</VocationalConcentrator> <Immigrant>No</Immigrant> </StudentSnapshot> </AssessmentResponseDataItem> <AssessmentResponseDataItem> <AssessmentRegistration RefId="84243B2716EA4A68889B57A07E3707D7" StudentPersonalRefId="0D015F74DAB645FD92EFA8F43F2D79D7" AssessmentAdministrationRefId="6B08DF6E158941D9B8206D16E1FA6219"> <CreationDateTime>2006-03-05T09:30:00-05:00</CreationDateTime> <StudentGradeLevel> <Code>04</Code> </StudentGradeLevel> <AssessmentGradeLevel> <Code>03</Code> </AssessmentGradeLevel> </AssessmentRegistration> <StudentResponseSet RefId="0D015F74DAB645FD92EFA8F43F2D79D7" AssessmentAdministrationRefId="BB181B05598C46D2B8D533483D91392E" StudentPersonalRefId="8F0934CC2F0448F8BBD788AA1ADE691B"> <Items> <Item> <Response>E</Response> <ResponseLocation>http://assessments-r-us.com/29834928374/2394/response.html</ResponseLocation> <ItemNumber>27</ItemNumber> <ItemName>Writing Sample 1</ItemName> <DiagnosticStatement>Shows ability to determine symmetry</DiagnosticStatement> <NumberOfAttempts>1</NumberOfAttempts> </Item> </Items> </StudentResponseSet> </AssessmentResponseDataItem> </AssessmentResponseData> </ScoreItems>
Example 7.3.3.1-1: ScoreItems

7.3.3.2 ScoreItemsResponse

ScoreItemsResponse
Figure 7.3.3.2-1: ScoreItemsResponse ScoreItemsResponse Accepted Receipt Description
 Element/@AttributeCharDescriptionType
 ScoreItemsResponse   
 AcceptedM

True or false (boolean) return value indicating whether the assessment processing service has accepted the task.

 
xs:boolean
 ReceiptC

If accepted, a confirmation token, such as a confirmation number.

 
xs:token
 DescriptionO

Description of additional information regarding the acceptance of this AssessmentAdministration.

 
xs:normalizedString
Table 7.3.3.2-1: ScoreItemsResponse
<ScoreItemsResponse> <Accepted>true</Accepted> <Receipt>00898788899-A2</Receipt> <Description>Assessment Administration has been accepted by the scoring authority</Description> </ScoreItemsResponse>
Example 7.3.3.2-1: ScoreItemsResponse

7.3.3.3 ItemsScored

ItemsScored
Figure 7.3.3.3-1: ItemsScored ItemsScored AssessmentAdministration AssessmentResponseData AssessmentResponseDataItem AssessmentRegistration StudentResponseSet StudentSnapshot
 Element/@AttributeCharDescriptionType
 ItemsScored   
 AssessmentAdministrationM

The AssessmentAdministration SIF Object.

 
AssessmentAdministration
 AssessmentResponseDataM

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
Table 7.3.3.3-1: ItemsScored
<ItemsScored> <AssessmentAdministration RefId="E2E8045FD8884745AC588F1DDDBEE864" AssessmentFormRefId="78DA3F367AAE4E34995CE15530F531CC"> <SpecialConditions> <SpecialCondition Code="25B">Fire drill during test.</SpecialCondition> </SpecialConditions> <AdministrationDateTime>2006-03-06T14:30:00-05:00</AdministrationDateTime> <FinishDateTime>2006-03-06T15:30:00-05:00</FinishDateTime> </AssessmentAdministration> <AssessmentResponseData> <AssessmentResponseDataItem> <AssessmentRegistration RefId="84243B2716EA4A68889B57A07E3707C9" StudentPersonalRefId="0D015F74DAB645FD92EFA8F43F2D79C3" AssessmentAdministrationRefId="6B08DF6E158941D9B8206D16E1FA6219"> <CreationDateTime>2006-03-05T09:30:00-05:00</CreationDateTime> <StudentSpecialConditions> <StudentSpecialCondition Code="45C">Student became ill during test.</StudentSpecialCondition> </StudentSpecialConditions> <StudentGradeLevel> <Code>04</Code> </StudentGradeLevel> <AssessmentGradeLevel> <Code>03</Code> </AssessmentGradeLevel> </AssessmentRegistration> <StudentResponseSet RefId="0D015F74DAB645FD92EFA8F43F2D79C3" AssessmentAdministrationRefId="BB181B05598C46D2B8D533483D91392E" StudentPersonalRefId="8F0934CC2F0448F8BBD788AA1ADE691B"> <Items> <Item> <Response>C</Response> <ResponseLocation>http://assessments-r-us.com/29834928374/2394/response.html</ResponseLocation> <ResponseStatus>Incomplete</ResponseStatus> <ResponseTime>PT32S</ResponseTime> <ItemNumber>27</ItemNumber> <ItemName>Writing Sample 1</ItemName> <DiagnosticStatement>Shows ability to determine symmetry</DiagnosticStatement> <NumberOfAttempts>2</NumberOfAttempts> </Item> </Items> </StudentResponseSet> <StudentSnapshot SnapDate="2003-10-01" StudentPersonalRefId="A15484ED564995254A4568EFFC5100BD" SchoolYear="2004"> <IDEA>No</IDEA> <Migrant>No</Migrant> <Title1>Yes</Title1> <GiftedTalented>No</GiftedTalented> <EconomicDisadvantage>Yes</EconomicDisadvantage> <ELL>No</ELL> <Homeless>No</Homeless> <Section504>No</Section504> <VocationalConcentrator>No</VocationalConcentrator> <Immigrant>No</Immigrant> </StudentSnapshot> </AssessmentResponseDataItem> </AssessmentResponseData> </ItemsScored>
Example 7.3.3.3-1: ItemsScored

7.3.3.4 ItemsScoredResponse

ItemsScoredResponse
Figure 7.3.3.4-1: ItemsScoredResponse ItemsScoredResponse Accepted Receipt Description
 Element/@AttributeCharDescriptionType
 ItemsScoredResponse   
 AcceptedM

True or false (boolean) return value indicating whether the Online Assessment System has accepted the results.

 
xs:boolean
 ReceiptC

If accepted, a confirmation token, such as a confirmation number.

 
xs:token
 DescriptionO

Description of additional information regarding the acceptance of these scores.

 
xs:string
Table 7.3.3.4-1: ItemsScoredResponse
<ItemsScoredResponse> <Accepted>true</Accepted> <Receipt>00898788899-A2</Receipt> <Description>Assessment Administration has been accepted by the scoring authority</Description> </ItemsScoredResponse>
Example 7.3.3.4-1: ItemsScoredResponse

7.3.3.5 AdministrationScored

AdministrationScored
Figure 7.3.3.5-1: AdministrationScored AdministrationScored AssessmentAdministration
 Element/@AttributeCharDescriptionType
 AdministrationScored   
 AssessmentAdministrationM

The AssessmentAdministration SIF Object.

 
AssessmentAdministration
Table 7.3.3.5-1: AdministrationScored
<AdministrationScored> <AssessmentAdministration RefId="E2E8045FD8884745AC588F1DDDBEE864" AssessmentFormRefId="78DA3F367AAE4E34995CE15530F531CC"> <SpecialConditions> <SpecialCondition Code="25B">Fire drill during test.</SpecialCondition> </SpecialConditions> <AdministrationDateTime>2006-03-06T14:30:00-05:00</AdministrationDateTime> <FinishDateTime>2006-03-06T15:30:00-05:00</FinishDateTime> </AssessmentAdministration> </AdministrationScored>
Example 7.3.3.5-1: AdministrationScored

7.4 Student Record Exchange Services

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.

7.4.1 Overview

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:

7.4.2 Terminology

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.

7.4.3 Student and Agency Identifiers

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.

7.4.4 SRE Services Overview

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.

7.4.5 Intermediary Agents

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:

7.4.6 Transaction Services

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.

7.4.7 Requesting Student Records Directly from a Trading Partner

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:

  1. StateProvinceId of the student
  2. StateProvinceId of the sending agency (the agency supplying the data)
  3. StateProvinceId of the receiving agency (the agency requesting the data)

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).

7.4.8 Requesting Student Records via a Broker

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:

  1. StateProvinceId of the student
  2. StateProvinceId of the sending agency (the agency supplying the data)
  3. StateProvinceId of the receiving agency (the agency requesting the data)

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).

7.4.9 End-to-End Student Record Exchange from a Broker

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:

  1. StateProvinceId of the student
  2. StateProvinceId of the sending agency (the agency supplying the data)
  3. StateProvinceId of the receiving agency (the agency requesting the data)
  4. The StudentRecordExchange object set to deliver

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.

7.4.10 Consumer Services

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.

7.4.11 Rules for Calling Consumer Services

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:

  1. It obtains a SIF_ZoneStatus object to determine the agents in the zone that implement the SRE Consumer service or the individual record-level Consumer Services.
  2. For each agent that implements the SRE Consumer service (excluding itself), the intermediary agent invokes the SetRecordExchange method.
  3. For each agent that implements the SRE Student Demographic Record Consumer service, the intermediary agent invokes the SetDemographicRecord method, supplying only the StudentDemographicRecord portion of the student data.
  4. For each agent that implements the SRE Student Academic Record Consumer service, the intermediary agent invokes the SetAcademicRecord method, supplying only the StudentAcademicRecord portion of the student data.
  5. For each agent that implements the SRE Student Special Education Record Consumer service, the intermediary agent invokes the SetSpecialEducationRecord method, supplying only the StudentSpecialEducationRecord portion of the student data.

7.4.12 Consuming Student Records into Target Applications

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.

7.4.13 Zone Service Operations

7.4.13.1 SRE Broker

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.

7.4.13.2 SRE Publisher

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.

7.4.13.3 SRE Consumer

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.

7.4.13.4 SRE Student Academic Record Consumer

Zone Service Service Input Service Output Description
serviceSREAcademicRecordConsumer SetAcademicRecord SetAcademicRecordResponse Requests that a StudentAcademicRecord object for a given student be consumed.

7.4.13.5 SRE Student Demographic Record Consumer

Zone Service Service Input Service Output Description
serviceSREDemographicRecordConsumer SetDemographicRecord SetDemographicRecordResponse Requests that a StudentDemographicRecord object for a given student be consumed.

7.4.13.6 SRE Student Special Education Record Consumer

Zone Service Service Input Service Output Description
serviceSRESpecialEducationRecordConsumer SetSpecialEducationRecord SetSpecialEducationRecordResponse Requests that a StudentSpecialEducationRecord object for a given student be consumed.

7.4.14 Service Body Definitions

7.4.14.1 GetRecordExchange

The GetRecordExchange message requests that a StudentRecordExchange object set be published for a given student and sending agency.
GetRecordExchange
Figure 7.4.14.1-1: GetRecordExchange GetRecordExchange StudentId SendingAgencyId ReceivingAgencyId ExtendedParameters
 Element/@AttributeCharDescriptionType
 GetRecordExchange   
 StudentIdM

The StateProvinceId of the student

 
StateProvinceId
 SendingAgencyIdM

The StateProvinceId of the sending agency

 
StateProvinceId
 ReceivingAgencyIdM

The StateProvinceId of the receiving agency

 
StateProvinceId
 ExtendedParametersO

Optional list of additional implementation-dependent parameters

 
ExtendedParameters
Table 7.4.14.1-1: GetRecordExchange
<GetRecordExchange> <StudentId>10009600</StudentId> <SendingAgencyId>884</SendingAgencyId> <ReceivingAgencyId>601</ReceivingAgencyId> <ExtendedParameters> <ExtendedParameter> <SIF_Name>Options</SIF_Name> <SIF_Value>0x0001</SIF_Value> </ExtendedParameter> <ExtendedParameter> <SIF_Name>ExchangeType</SIF_Name> <SIF_Value>Transcript</SIF_Value> </ExtendedParameter> </ExtendedParameters> </GetRecordExchange>
Example 7.4.14.1-1: GetRecordExchange

7.4.14.2 GetRecordExchangeResponse

GetRecordExchangeResponse
Figure 7.4.14.2-1: GetRecordExchangeResponse GetRecordExchangeResponse StudentRecordExchangeDataList
 Element/@AttributeCharDescriptionType
 GetRecordExchangeResponse   
 StudentRecordExchangeDataListM

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
Table 7.4.14.2-1: GetRecordExchangeResponse
<GetRecordExchangeResponse> <StudentRecordExchangeDataList> <StudentRecordExchangeData> <StudentRecordExchange RefId="0D015F74DAB645FD92EFA8F43F2D79C3"> <StateProvinceId>10009600</StateProvinceId> <Records> <StudentDemographicRecordRefId>A15484ED564995254A4568EFFC5100BD</StudentDemographicRecordRefId> <StudentAcademicRecordRefId>BB181B05598C46D2B8D533483D91392E</StudentAcademicRecordRefId> </Records> </StudentRecordExchange> </StudentRecordExchangeData> <StudentRecordExchangeData> <StudentDemographicRecord RefId="A15484ED564995254A4568EFFC5100BD" SIF_RefObject="StudentRecordExchange" SIF_RefId="0D015F74DAB645FD92EFA8F43F2D79C3"> <ReportingDate>2008-11-07</ReportingDate> <StudentPersonalData> <LocalId>88495</LocalId> <StateProvinceId>10009600</StateProvinceId> <Name Type="04"> <LastName>Petersen</LastName> <FirstName>Eric</FirstName> </Name> </StudentPersonalData> </StudentDemographicRecord> </StudentRecordExchangeData> <StudentRecordExchangeData> <StudentAcademicRecord RefId="BB181B05598C46D2B8D533483D91392E" SIF_RefObject="StudentRecordExchange" SIF_RefId="0D015F74DAB645FD92EFA8F43F2D79C3" /> </StudentRecordExchangeData> </StudentRecordExchangeDataList> </GetRecordExchangeResponse>
Example 7.4.14.2-1: GetRecordExchangeResponse

7.4.14.3 SetRecordExchange

The SetRecordExchange message requests that a StudentRecordExchange object for a given student and sending agency be consumed.
SetRecordExchange
Figure 7.4.14.3-1: SetRecordExchange SetRecordExchange StudentId SendingAgencyId ReceivingAgencyId ExtendedParameters StudentRecordExchangeDataList
 Element/@AttributeCharDescriptionType
 SetRecordExchange   
 StudentIdM

The StateProvinceId of the student. In the case where a SIF_ServiceInput message spans multiple packets, each packet must provide this element.

 
StateProvinceId
 SendingAgencyIdM

The StateProvinceId of the sending agency. In the case where a SIF_ServiceInput message spans multiple packets, each packet must provide this element.

 
StateProvinceId
 ReceivingAgencyIdM

The StateProvinceId of the receiving agency. In the case where a SIF_ServiceInput message spans multiple packets, each packet must provide this element.

 
StateProvinceId
 ExtendedParametersO

Optional list of additional implementation-dependent parameters

 
ExtendedParameters
 StudentRecordExchangeDataListM

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
Table 7.4.14.3-1: SetRecordExchange
<SetRecordExchange> <StudentId>10009600</StudentId> <SendingAgencyId>884</SendingAgencyId> <ReceivingAgencyId>601</ReceivingAgencyId> <ExtendedParameters> <ExtendedParameter> <SIF_Name>Options</SIF_Name> <SIF_Value>0x0001</SIF_Value> </ExtendedParameter> <ExtendedParameter> <SIF_Name>ExchangeType</SIF_Name> <SIF_Value>Transcript</SIF_Value> </ExtendedParameter> </ExtendedParameters> <StudentRecordExchangeDataList> <StudentRecordExchangeData> <StudentRecordExchange RefId="0D015F74DAB645FD92EFA8F43F2D79C3"> <StateProvinceId>10009600</StateProvinceId> <Records> <StudentDemographicRecordRefId>A15484ED564995254A4568EFFC5100BD</StudentDemographicRecordRefId> <StudentAcademicRecordRefId>BB181B05598C46D2B8D533483D91392E</StudentAcademicRecordRefId> </Records> </StudentRecordExchange> </StudentRecordExchangeData> <StudentRecordExchangeData> <StudentDemographicRecord RefId="A15484ED564995254A4568EFFC5100BD" SIF_RefObject="StudentRecordExchange" SIF_RefId="0D015F74DAB645FD92EFA8F43F2D79C3"> <ReportingDate>2008-11-07</ReportingDate> <StudentPersonalData> <LocalId>88495</LocalId> <StateProvinceId>10009600</StateProvinceId> <Name Type="04"> <LastName>Petersen</LastName> <FirstName>Eric</FirstName> </Name> </StudentPersonalData> </StudentDemographicRecord> </StudentRecordExchangeData> <StudentRecordExchangeData> <StudentAcademicRecord RefId="BB181B05598C46D2B8D533483D91392E" SIF_RefObject="StudentRecordExchange" SIF_RefId="0D015F74DAB645FD92EFA8F43F2D79C3" /> </StudentRecordExchangeData> </StudentRecordExchangeDataList> </SetRecordExchange>
Example 7.4.14.3-1: SetRecordExchange

7.4.14.4 SetRecordExchangeResponse

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.

SetRecordExchangeResponse
Figure 7.4.14.4-1: SetRecordExchangeResponse SetRecordExchangeResponse
 Element/@AttributeCharDescriptionType
 SetRecordExchangeResponse  This object is empty.  xs:normalizedString
Table 7.4.14.4-1: SetRecordExchangeResponse
Example 7.4.14.4-1: SetRecordExchangeResponse

7.4.14.5 SetAcademicRecord

Figure 7.4.14.5-1: SetAcademicRecord SetAcademicRecord StudentId SendingAgencyId ReceivingAgencyId ExtendedParameters StudentAcademicRecord
 Element/@AttributeCharDescriptionType
 SetAcademicRecord   
 StudentIdM

The StateProvinceId of the student. In the case where a SIF_ServiceInput message spans multiple packets, each packet must provide this element.

 
StateProvinceId
 SendingAgencyIdM

The StateProvinceId of the sending agency. In the case where a SIF_ServiceInput message spans multiple packets, each packet must provide this element.

 
StateProvinceId
 ReceivingAgencyIdM

The StateProvinceId of the receiving agency. In the case where a SIF_ServiceInput message spans multiple packets, each packet must provide this element.

 
StateProvinceId
 ExtendedParametersO

Optional list of additional implementation-dependent parameters

 
ExtendedParameters
 StudentAcademicRecordM

 

StudentAcademicRecord
Table 7.4.14.5-1: SetAcademicRecord
<SetAcademicRecord> <StudentId>10009600</StudentId> <SendingAgencyId>884</SendingAgencyId> <ReceivingAgencyId>601</ReceivingAgencyId> <ExtendedParameters> <ExtendedParameter> <SIF_Name>Options</SIF_Name> <SIF_Value>0x0001</SIF_Value> </ExtendedParameter> <ExtendedParameter> <SIF_Name>ExchangeType</SIF_Name> <SIF_Value>Transcript</SIF_Value> </ExtendedParameter> </ExtendedParameters> </SetAcademicRecord>
Example 7.4.14.5-1: SetAcademicRecord

7.4.14.6 SetAcademicRecordResponse

This object is empty.

Figure 7.4.14.6-1: SetAcademicRecordResponse SetAcademicRecordResponse
 Element/@AttributeCharDescriptionType
 SetAcademicRecordResponse  This object is empty.  xs:normalizedString
Table 7.4.14.6-1: SetAcademicRecordResponse
Example 7.4.14.6-1: SetAcademicRecordResponse

7.4.14.7 SetDemographicRecord

Figure 7.4.14.7-1: SetDemographicRecord SetDemographicRecord StudentId SendingAgencyId ReceivingAgencyId ExtendedParameters StudentDemographicRecord
 Element/@AttributeCharDescriptionType
 SetDemographicRecord   
 StudentIdM

The StateProvinceId of the student. In the case where a SIF_ServiceInput message spans multiple packets, each packet must provide this element.

 
StateProvinceId
 SendingAgencyIdM

The StateProvinceId of the sending agency. In the case where a SIF_ServiceInput message spans multiple packets, each packet must provide this element.

 
StateProvinceId
 ReceivingAgencyIdM

The StateProvinceId of the receiving agency. In the case where a SIF_ServiceInput message spans multiple packets, each packet must provide this element.

 
StateProvinceId
 ExtendedParametersO

Optional list of additional implementation-dependent parameters

 
ExtendedParameters
 StudentDemographicRecordM

 

StudentDemographicRecord
Table 7.4.14.7-1: SetDemographicRecord
<SetDemographicRecord> <StudentId>10009600</StudentId> <SendingAgencyId>884</SendingAgencyId> <ReceivingAgencyId>601</ReceivingAgencyId> <ExtendedParameters> <ExtendedParameter> <SIF_Name>Options</SIF_Name> <SIF_Value>0x0001</SIF_Value> </ExtendedParameter> <ExtendedParameter> <SIF_Name>ExchangeType</SIF_Name> <SIF_Value>Transcript</SIF_Value> </ExtendedParameter> </ExtendedParameters> <StudentDemographicRecord RefId="A15484ED564995254A4568EFFC5100BD" SIF_RefObject="StudentRecordExchange" SIF_RefId="0D015F74DAB645FD92EFA8F43F2D79C3"> <ReportingDate>2008-11-07</ReportingDate> <StudentPersonalData> <LocalId>88495</LocalId> <StateProvinceId>10009600</StateProvinceId> <Name Type="04"> <LastName>Petersen</LastName> <FirstName>Eric</FirstName> </Name> </StudentPersonalData> </StudentDemographicRecord> </SetDemographicRecord>
Example 7.4.14.7-1: SetDemographicRecord

7.4.14.8 SetDemographicRecordResponse

This object is empty.

Figure 7.4.14.8-1: SetDemographicRecordResponse SetDemographicRecordResponse
 Element/@AttributeCharDescriptionType
 SetDemographicRecordResponse  This object is empty.  xs:normalizedString
Table 7.4.14.8-1: SetDemographicRecordResponse
Example 7.4.14.8-1: SetDemographicRecordResponse