Ed-Fi RFC 27 (c) - Assessment Model Changes
Ed-Fi Request for Comment 27 Part C: Assessment Model Changes
Product: Ed-Fi-Sponsored Standard
Affects: Ed-Fi Resources API
Obsoletes: --
Obsoleted By: --
Status: done
Ed-Fi Alliance
September 12, 2025;
Synopsis
This Request for Comments (RFC) includes materials that describe proposed additions and revisions to the Ed-Fi Data Standard. This draft material is intended to support review and comment as well as support early usage; users of this material are advised that this work is still under development.
RFC 27 Part C describes updates to the Assessment data model that will normalize practices across vendors and reduce ambiguity for integrations with the Ed-Fi Data Standard. These enhancements incorporate the following changes:
Assessmentdomain entityAcademicSubjectis now a single descriptor instead of a collection
ObjectiveAssessmentdomain entityParentObjectiveAssessmentis now a collection instead of a single field
StudentAssessmentdomain entitySchoolYearis now required, not optionalWhenAssessedGradeLevel, new fieldStudentAssessmentIndicator, new collection
Contents
- 1 Synopsis
- 2 Overview/General Discussion
- 3 Use Cases
- 3.1 Assessment Entity having multiple academic subjects
- 3.2 Problem 2 – StudentAssessment.SchoolYear should be REQUIRED
- 3.3 Problem 3 – Link an objective assessment to many parent objective assessments
- 3.4 Problem 4 – Rename WhenAssessedGradeLevel -> AssessedGradeLevel in StudentAssessment
- 3.5 Problem 5 – Add StudentAssessmentIndicator[] to StudentAssessment
- 4 Feedback
Overview/General Discussion
These improvements are based on a proposal from Education Analytics, rooted in their work to integrate thirty assessments into the South Carolina state data collection. The Ed-Fi Alliance evaluated that proposal, compared to existing normative best practices, and (a) developed a small set of proposed changes to the Ed-Fi Data Standard and (b) identified opportunities for improving documentation and guidance on use of the Assessment domain. Before adopting the proposed changes, they were shared with the new Assessment Working Group and with national Assessment vendors in individual conversations. The final set of changes seeks to balance the sometimes-conflicting demands for clean data input and ease of use with data read back from the Ed-Fi API, for example to provide analytic insights.
Use Cases
Assessment Entity having multiple academic subjects
In the Ed-Fi Data Standard, the top-level assessment entity has a collection of academic subjects (required) instead of a single subject. This disrupts core analytics functions like filtering by subject, comparing vendor products by subjects, and analyzing trends. Subject-specific analysis is crucial for assessment data. Not including the academic subject in the key forces vendors to create a unique key structure for Ed-Fi Data Standard integrations.
Proposed DS 6.0 change
Require exactly one Academic Subject on each Assessment and make it part of the primary key.
For cross‑subject composites (e.g., SAT/ACT composite), set the assessment’s subject to
Composite(descriptor), with subject‑specific results captured asObjectiveAssessments(each with its ownAcademicSubject).Validation rule: Every
StudentAssessmentmust be inferably linked to exactly one subject via its Assessment reference (and any objective results are subject‑scoped beneath it).
Rationale
Allows consistent, tool-agnostic subject filtering and cross vendor comparisons by academic subject.
Eliminates per vendor mapping of assessment scores -> subjects.
Removes ambiguity and divergence.
Design Option 1 – No key change, make Academic Subject as a single attribute - ACCEPTED
Property | Type | Identity | Cardinality |
|---|---|---|---|
AcademicSubject | Descriptor | Yes | REQUIRED |
Design Option 2 – Key change, make Academic Subject as part of identity - REJECTED
Property | Type | Identity | Cardinality |
|---|---|---|---|
AssessmentIdentifier | String | Yes | REQUIRED |
Namespace | String | Yes | REQUIRED |
AcademicSubject | Descriptor | Yes | REQUIRED |
The following diagrams provide a visual aid to understanding the scope of the problem:
Problem 2 – StudentAssessment.SchoolYear should be REQUIRED
Optional School Year allows inconsistent population, complicating longitudinal analysis, cohort inclusion, accountability snapshots and CCR and CCMR pipelines.
Proposed DS 6.0 change
Make
SchoolYeara required property onStudentAssessment(or onStudentAssessmentEducationOrganizationAssociationif that’s the canonical ownership point), with a clear definition: the academic year of record for the assessment administration.
Rationale
Ensures consistent data for analysis and reporting.
Where summer administrations straddle years, guidance clarifies alignment (e.g., associate to the year containing the majority of the academic term of record or per state policy).
Design - ACCEPTED
Property | JSON Type | Identity | Cardinality |
|---|---|---|---|
SchoolYear | Object | No | REQUIRED |
Problem 3 – Link an objective assessment to many parent objective assessments
Some assessments compute composite domains that legitimately belong under multiple parents (e.g., language domains that roll up into both Literacy and Oral Language). Current 1‑parent modeling forces duplication or loss of relationships.
Proposed DS 6.0 change
Make
ObjectiveAssessment.ParentObjectiveAssessmentfrom Optional to Optional CollectionThis is a non-breaking change.
Rationale
Ensures accurate roll-up logic and UI grouping.
Faithfully represents vendor scorebooks (ACCESS and CogAT) without denormalized duplication.
Design - ACCEPTED
Property | JSON Type | Identity | Cardinality |
|---|---|---|---|
ParentObjectiveAssessment | Object | No | OPTIONAL COLLECTION |
Problem 4 – Rename WhenAssessedGradeLevel -> AssessedGradeLevel in StudentAssessment
The current name whenAssessedGradeLevel causes confusion between enrolled and tested grades, leading to misclassified records and broken trend lines. Renaming it to assessedGradeLevel clarifies that it refers to the grade level for which the test was designed and administered. The enrolled grade will still be available through roster data.
Proposed DS 6.0 change
Rename the property to
assessedGradeLevelwith the definition: ‘The grade level for which the test form was assessed for the student on this administration’ - REJECTED
Rationale
Improves semantic clarity and aligns to analysis needs; enrolled grade remains available via roster.
Certain vendors need to maintain WhenAssessedGradeLevel at the StudentAssessment level.
New Design - ACCEPTED
Revised based on community feedback: add the new field without removing the old one. Supports reporting both fields
Property | Type | Identity | Definition | Cardinality |
|---|---|---|---|---|
AssessedGradeLevel | Descriptor - Not a collection | No | The grade level for which the test form was assessed for the student on this administration. | Optional |
WhenAssessedGradeLevel | Descriptor | No | The grade level of a student when assessed. | Optional |
Problem 5 – Add StudentAssessmentIndicator[] to StudentAssessment
Vendors deliver non-score attributes without a proper place to store them in the current Assessment model. This leads to the misuse of non-score flags as scores or packed into descriptor lists that were not intended for reporting methods.
Examples – At Risk
Proposed DS 6.0 change
StudentAssessment.StudentAssessmentIndicator- new optional collection
Rationale
This cleanly separates scores from vendor-specific context and removes the need to misuse
assessmentReportingMethodDescriptorsorscoreResultsfor non-score flags.
Design - ACCEPTED
The following shows the item-level definition of an indicator:
Property | JSON Data Type | Identity | Cardinality |
|---|---|---|---|
IndicatorGroup | String | No | OPTIONAL |
IndicatorName | String | Yes | REQUIRED |
Indicator | String | Yes | REQUIRED |
Feedback
Please contact @Maria Ragone via e-mail or using Ed-Fi’s Slack subscription to provide feedback on this RFC.