From 8aa271fb560d869294660ab9665ba6db844eb130 Mon Sep 17 00:00:00 2001
From: semalaiappan <34613894+semalaiappan@users.noreply.github.com>
Date: Fri, 8 Nov 2024 22:05:00 -0600
Subject: [PATCH] [ODS-6535] Bring in Assessment Registration domain DS 5.2
updates (#1181)
---
.../5.2.0/Artifacts/Metadata/ApiModel.json | 6791 +-
...sessmentRegistration-security-metadata.sql | 2230 +
...sessmentRegistration-security-metadata.xml | 251 +
.../MsSql/Structure/Ods/0020-Tables.sql | 374 +
.../MsSql/Structure/Ods/0030-ForeignKeys.sql | 243 +-
.../Ods/0040-IdColumnUniqueIndexes.sql | 42 +
.../Structure/Ods/0050-ExtendedProperties.sql | 258 +
...x-EdOrgIdsRelationship-AuthPerformance.sql | 35 +
.../Structure/Ods/1460-AggregateIdColumns.sql | 24 +
.../0030-AddColumnChangeVersionForTables.sql | 48 +
.../0070-AddIndexChangeVersionForTables.sql | 36 +
.../0200-CreateTrackedChangeTables.sql | 116 +
...eTriggersForChangeVersionAndKeyChanges.sql | 78 +
.../0220-CreateTriggersForDeleteTracking.sql | 151 +-
.../0010-AddColumnOwnershipTokenForTable.sql | 12 +
...sessmentRegistration-security-metadata.sql | 2112 +
...sessmentRegistration-security-metadata.xml | 251 +
.../PgSql/Structure/Ods/0020-Tables.sql | 237 +-
.../PgSql/Structure/Ods/0030-ForeignKeys.sql | 220 +-
.../Ods/0040-IdColumnUniqueIndexes.sql | 12 +
.../Structure/Ods/0050-ExtendedProperties.sql | 145 +
...x-EdOrgIdsRelationship-AuthPerformance.sql | 14 +
.../Structure/Ods/1460-AggregateIdColumns.sql | 30 +
.../0030-AddColumnChangeVersionForTables.sql | 30 +
.../0070-AddIndexChangeVersionForTables.sql | 12 +
.../0200-CreateTrackedChangeTables.sql | 128 +
...eTriggersForChangeVersionAndKeyChanges.sql | 30 +
.../0220-CreateTriggersForDeleteTracking.sql | 153 +-
.../0010-AddColumnOwnershipTokenForTable.sql | 12 +
.../5.2.0/Artifacts/Schemas/Ed-Fi-Core.xsd | 697 +-
.../Schemas/Interchange-Descriptors.xsd | 1 +
.../Artifacts/Schemas/SchemaAnnotation.xsd | 1 +
...ization Test Suite.postman_collection.json | 15 +-
...ated_File_List.Standard.5.1.0.approved.txt | 1 -
...ated_File_List.Standard.5.2.0.approved.txt | 1 -
...trollers_Controllers.generated.approved.cs | 295 +
...tityOrmMappings.generated.hbm.approved.xml | 864 +-
...pingsForQueries.generated.hbm.approved.xml | 1003 +-
...tityOrmMappings.generated.hbm.approved.xml | 864 +-
...pingsForQueries.generated.hbm.approved.xml | 1003 +-
...ing_DatabaseMetadata.generated.approved.cs | 58 +-
...ls_Entities_Entities.generated.approved.cs | 75617 ++++----
...s_EntitiesForQueries.generated.approved.cs | 1008 +-
...ces_EntityInterfaces.generated.approved.cs | 1762 +-
...Mappers_EntityMapper.generated.approved.cs | 2755 +-
...ateOrUpdatePipelines.generated.approved.cs | 48 +
....0_Requests_Requests.generated.approved.cs | 423 +
..._Resources_Resources.generated.approved.cs | 146392 ++++++++-------
...tionContextProviders.generated.approved.cs | 288 +
...Tests.Should_Get_Dependencies.approved.txt | 64 +
...ould_Get_Dependencies_GraphML.approved.txt | 76 +
51 files changed, 141333 insertions(+), 105978 deletions(-)
create mode 100644 Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/MsSql/Data/Security/2200-AssessmentRegistration-security-metadata.sql
create mode 100644 Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/MsSql/Data/Security/2200-AssessmentRegistration-security-metadata.xml
create mode 100644 Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/PgSql/Data/Security/2200-AssessmentRegistration-security-metadata.sql
create mode 100644 Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/PgSql/Data/Security/2200-AssessmentRegistration-security-metadata.xml
delete mode 100644 Utilities/CodeGeneration/EdFi.Ods.CodeGen.Tests/Approval/5.2.0/DataStandard_510_ApprovalTests.Generated_File_List.Standard.5.1.0.approved.txt
delete mode 100644 Utilities/CodeGeneration/EdFi.Ods.CodeGen.Tests/Approval/5.2.0/DataStandard_510_ApprovalTests.Generated_File_List.Standard.5.2.0.approved.txt
diff --git a/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/Metadata/ApiModel.json b/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/Metadata/ApiModel.json
index d3317aec15..e5184245e9 100644
--- a/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/Metadata/ApiModel.json
+++ b/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/Metadata/ApiModel.json
@@ -223,6 +223,42 @@
}
]
},
+ {
+ "aggregateRootEntityName": {
+ "schema": "edfi",
+ "name": "AssessmentAdministration"
+ },
+ "aggregateEntityNames": [
+ {
+ "schema": "edfi",
+ "name": "AssessmentAdministration"
+ },
+ {
+ "schema": "edfi",
+ "name": "AssessmentAdministrationAssessmentAdminstrationPeriod"
+ },
+ {
+ "schema": "edfi",
+ "name": "AssessmentAdministrationAssessmentBatteryPart"
+ }
+ ]
+ },
+ {
+ "aggregateRootEntityName": {
+ "schema": "edfi",
+ "name": "AssessmentBatteryPart"
+ },
+ "aggregateEntityNames": [
+ {
+ "schema": "edfi",
+ "name": "AssessmentBatteryPart"
+ },
+ {
+ "schema": "edfi",
+ "name": "AssessmentBatteryPartObjectiveAssessment"
+ }
+ ]
+ },
{
"aggregateRootEntityName": {
"schema": "edfi",
@@ -331,6 +367,22 @@
}
]
},
+ {
+ "aggregateRootEntityName": {
+ "schema": "edfi",
+ "name": "AssesssmentAdministrationParticipation"
+ },
+ "aggregateEntityNames": [
+ {
+ "schema": "edfi",
+ "name": "AssesssmentAdministrationParticipation"
+ },
+ {
+ "schema": "edfi",
+ "name": "AssesssmentAdministrationParticipationAdministrationPointOfContact"
+ }
+ ]
+ },
{
"aggregateRootEntityName": {
"schema": "edfi",
@@ -3563,6 +3615,18 @@
}
]
},
+ {
+ "aggregateRootEntityName": {
+ "schema": "edfi",
+ "name": "Section504DisabilityTypeDescriptor"
+ },
+ "aggregateEntityNames": [
+ {
+ "schema": "edfi",
+ "name": "Section504DisabilityTypeDescriptor"
+ }
+ ]
+ },
{
"aggregateRootEntityName": {
"schema": "edfi",
@@ -4143,6 +4207,42 @@
}
]
},
+ {
+ "aggregateRootEntityName": {
+ "schema": "edfi",
+ "name": "StudentAssessmentRegistration"
+ },
+ "aggregateEntityNames": [
+ {
+ "schema": "edfi",
+ "name": "StudentAssessmentRegistration"
+ },
+ {
+ "schema": "edfi",
+ "name": "StudentAssessmentRegistrationAssessmentAccommodation"
+ },
+ {
+ "schema": "edfi",
+ "name": "StudentAssessmentRegistrationAssessmentCustomization"
+ }
+ ]
+ },
+ {
+ "aggregateRootEntityName": {
+ "schema": "edfi",
+ "name": "StudentAssessmentRegistrationBatteryPartAssociation"
+ },
+ "aggregateEntityNames": [
+ {
+ "schema": "edfi",
+ "name": "StudentAssessmentRegistrationBatteryPartAssociation"
+ },
+ {
+ "schema": "edfi",
+ "name": "StudentAssessmentRegistrationBatteryPartAssociationAccommodation"
+ }
+ ]
+ },
{
"aggregateRootEntityName": {
"schema": "edfi",
@@ -4251,6 +4351,22 @@
}
]
},
+ {
+ "aggregateRootEntityName": {
+ "schema": "edfi",
+ "name": "StudentEducationOrganizationAssessmentAccommodation"
+ },
+ "aggregateEntityNames": [
+ {
+ "schema": "edfi",
+ "name": "StudentEducationOrganizationAssessmentAccommodation"
+ },
+ {
+ "schema": "edfi",
+ "name": "StudentEducationOrganizationAssessmentAccommodationGeneralAccommodation"
+ }
+ ]
+ },
{
"aggregateRootEntityName": {
"schema": "edfi",
@@ -4599,6 +4715,18 @@
}
]
},
+ {
+ "aggregateRootEntityName": {
+ "schema": "edfi",
+ "name": "StudentSection504ProgramAssociation"
+ },
+ "aggregateEntityNames": [
+ {
+ "schema": "edfi",
+ "name": "StudentSection504ProgramAssociation"
+ }
+ ]
+ },
{
"aggregateRootEntityName": {
"schema": "edfi",
@@ -6053,6 +6181,246 @@
"postgreSql": "AssessmentAcademicSubject"
}
},
+ {
+ "schema": "edfi",
+ "name": "AssessmentAdministration",
+ "locallyDefinedProperties": [
+ {
+ "propertyName": "AdministrationIdentifier",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 255,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The title or name of the assessment in the context of its administration.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AdministrationIdentifier",
+ "postgreSql": "AdministrationIdentifier"
+ }
+ },
+ {
+ "propertyName": "CreateDate",
+ "propertyType": {
+ "dbType": "DateTime2",
+ "maxLength": 0,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "",
+ "isIdentifying": false,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "CreateDate",
+ "postgreSql": "CreateDate"
+ }
+ },
+ {
+ "propertyName": "Id",
+ "propertyType": {
+ "dbType": "Guid",
+ "maxLength": 0,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "",
+ "isIdentifying": false,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "Id",
+ "postgreSql": "Id"
+ }
+ },
+ {
+ "propertyName": "LastModifiedDate",
+ "propertyType": {
+ "dbType": "DateTime2",
+ "maxLength": 0,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "",
+ "isIdentifying": false,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "LastModifiedDate",
+ "postgreSql": "LastModifiedDate"
+ }
+ }
+ ],
+ "identifiers": [
+ {
+ "identifierName": "AssessmentAdministration_PK",
+ "identifyingPropertyNames": [
+ "AdministrationIdentifier",
+ "AssessmentIdentifier",
+ "AssigningEducationOrganizationId",
+ "Namespace"
+ ],
+ "isPrimary": true,
+ "isUpdatable": false,
+ "constraintNames": {
+ "sqlServer": "AssessmentAdministration_PK",
+ "postgreSql": "AssessmentAdministration_PK"
+ }
+ },
+ {
+ "identifierName": "UX_AssessmentAdministration_Id",
+ "identifyingPropertyNames": [
+ "Id"
+ ],
+ "isPrimary": false,
+ "isUpdatable": false,
+ "constraintNames": {
+ "sqlServer": "UX_AssessmentAdministration_Id",
+ "postgreSql": "UX_c64558_Id"
+ }
+ }
+ ],
+ "isAbstract": false,
+ "description": "The anticipated administration of an assessment under the purview of an education organization.",
+ "tableNames": {
+ "sqlServer": "AssessmentAdministration",
+ "postgreSql": "AssessmentAdministration"
+ }
+ },
+ {
+ "schema": "edfi",
+ "name": "AssessmentAdministrationAssessmentAdminstrationPeriod",
+ "locallyDefinedProperties": [
+ {
+ "propertyName": "BeginDate",
+ "propertyType": {
+ "dbType": "Date",
+ "minLength": 0,
+ "maxLength": 0,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The month, day, and year for the start of the period. Note: Date interpretation may vary. Ed-Fi recommends inclusive dates, but states may define dates as inclusive or exclusive. For calculations, align with local guidelines.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "BeginDate",
+ "postgreSql": "BeginDate"
+ }
+ },
+ {
+ "propertyName": "CreateDate",
+ "propertyType": {
+ "dbType": "DateTime2",
+ "maxLength": 0,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "",
+ "isIdentifying": false,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "CreateDate",
+ "postgreSql": "CreateDate"
+ }
+ },
+ {
+ "propertyName": "EndDate",
+ "propertyType": {
+ "dbType": "Date",
+ "minLength": 0,
+ "maxLength": 0,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": true
+ },
+ "description": "The month, day, and year for the end of the period. Note: Date interpretation may vary. Ed-Fi recommends inclusive dates, but states may define dates as inclusive or exclusive. For calculations, align with local guidelines.",
+ "isIdentifying": false,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "EndDate",
+ "postgreSql": "EndDate"
+ }
+ }
+ ],
+ "identifiers": [
+ {
+ "identifierName": "AssessmentAdministrationAssessmentAdminstrationPeriod_PK",
+ "identifyingPropertyNames": [
+ "AdministrationIdentifier",
+ "AssessmentIdentifier",
+ "AssigningEducationOrganizationId",
+ "Namespace",
+ "BeginDate"
+ ],
+ "isPrimary": true,
+ "isUpdatable": false,
+ "constraintNames": {
+ "sqlServer": "AssessmentAdministrationAssessmentAdminstrationPeriod_PK",
+ "postgreSql": "AssessmentAdministrationAssessmentAdminstrationPeriod_PK"
+ }
+ }
+ ],
+ "isAbstract": false,
+ "description": "The anticipated dates for the assessment or administration window.",
+ "tableNames": {
+ "sqlServer": "AssessmentAdministrationAssessmentAdminstrationPeriod",
+ "postgreSql": "AssessmentAdministrationAssessmentAdminstrationPeriod"
+ }
+ },
+ {
+ "schema": "edfi",
+ "name": "AssessmentAdministrationAssessmentBatteryPart",
+ "locallyDefinedProperties": [
+ {
+ "propertyName": "CreateDate",
+ "propertyType": {
+ "dbType": "DateTime2",
+ "maxLength": 0,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "",
+ "isIdentifying": false,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "CreateDate",
+ "postgreSql": "CreateDate"
+ }
+ }
+ ],
+ "identifiers": [
+ {
+ "identifierName": "AssessmentAdministrationAssessmentBatteryPart_PK",
+ "identifyingPropertyNames": [
+ "AdministrationIdentifier",
+ "AssessmentIdentifier",
+ "AssigningEducationOrganizationId",
+ "Namespace",
+ "AssessmentBatteryPartName"
+ ],
+ "isPrimary": true,
+ "isUpdatable": false,
+ "constraintNames": {
+ "sqlServer": "AssessmentAdministrationAssessmentBatteryPart_PK",
+ "postgreSql": "AssessmentAdministrationAssessmentBatteryPart_PK"
+ }
+ }
+ ],
+ "isAbstract": false,
+ "description": "A reference to the parts of the assessment battery that are offered in this administration of the assessment.",
+ "tableNames": {
+ "sqlServer": "AssessmentAdministrationAssessmentBatteryPart",
+ "postgreSql": "AssessmentAdministrationAssessmentBatteryPart"
+ }
+ },
{
"schema": "edfi",
"name": "AssessmentAssessedGradeLevel",
@@ -6098,6 +6466,161 @@
"postgreSql": "AssessmentAssessedGradeLevel"
}
},
+ {
+ "schema": "edfi",
+ "name": "AssessmentBatteryPart",
+ "locallyDefinedProperties": [
+ {
+ "propertyName": "AssessmentBatteryPartName",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 65,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The name of the part of an assessment battery.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AssessmentBatteryPartName",
+ "postgreSql": "AssessmentBatteryPartName"
+ }
+ },
+ {
+ "propertyName": "CreateDate",
+ "propertyType": {
+ "dbType": "DateTime2",
+ "maxLength": 0,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "",
+ "isIdentifying": false,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "CreateDate",
+ "postgreSql": "CreateDate"
+ }
+ },
+ {
+ "propertyName": "Id",
+ "propertyType": {
+ "dbType": "Guid",
+ "maxLength": 0,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "",
+ "isIdentifying": false,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "Id",
+ "postgreSql": "Id"
+ }
+ },
+ {
+ "propertyName": "LastModifiedDate",
+ "propertyType": {
+ "dbType": "DateTime2",
+ "maxLength": 0,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "",
+ "isIdentifying": false,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "LastModifiedDate",
+ "postgreSql": "LastModifiedDate"
+ }
+ }
+ ],
+ "identifiers": [
+ {
+ "identifierName": "AssessmentBatteryPart_PK",
+ "identifyingPropertyNames": [
+ "AssessmentBatteryPartName",
+ "AssessmentIdentifier",
+ "Namespace"
+ ],
+ "isPrimary": true,
+ "isUpdatable": false,
+ "constraintNames": {
+ "sqlServer": "AssessmentBatteryPart_PK",
+ "postgreSql": "AssessmentBatteryPart_PK"
+ }
+ },
+ {
+ "identifierName": "UX_AssessmentBatteryPart_Id",
+ "identifyingPropertyNames": [
+ "Id"
+ ],
+ "isPrimary": false,
+ "isUpdatable": false,
+ "constraintNames": {
+ "sqlServer": "UX_AssessmentBatteryPart_Id",
+ "postgreSql": "UX_6e22f2_Id"
+ }
+ }
+ ],
+ "isAbstract": false,
+ "description": "The parts organized for administering an assessessment which together provide a comprehensive assessment of the students.",
+ "tableNames": {
+ "sqlServer": "AssessmentBatteryPart",
+ "postgreSql": "AssessmentBatteryPart"
+ }
+ },
+ {
+ "schema": "edfi",
+ "name": "AssessmentBatteryPartObjectiveAssessment",
+ "locallyDefinedProperties": [
+ {
+ "propertyName": "CreateDate",
+ "propertyType": {
+ "dbType": "DateTime2",
+ "maxLength": 0,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "",
+ "isIdentifying": false,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "CreateDate",
+ "postgreSql": "CreateDate"
+ }
+ }
+ ],
+ "identifiers": [
+ {
+ "identifierName": "AssessmentBatteryPartObjectiveAssessment_PK",
+ "identifyingPropertyNames": [
+ "AssessmentBatteryPartName",
+ "AssessmentIdentifier",
+ "Namespace",
+ "IdentificationCode"
+ ],
+ "isPrimary": true,
+ "isUpdatable": false,
+ "constraintNames": {
+ "sqlServer": "AssessmentBatteryPartObjectiveAssessment_PK",
+ "postgreSql": "AssessmentBatteryPartObjectiveAssessment_PK"
+ }
+ }
+ ],
+ "isAbstract": false,
+ "description": "A reference to the objective assessment(s) that are administered by the assessment battery part.",
+ "tableNames": {
+ "sqlServer": "AssessmentBatteryPartObjectiveAssessment",
+ "postgreSql": "AssessmentBatteryPartObjectiveAssessment"
+ }
+ },
{
"schema": "edfi",
"name": "AssessmentCategoryDescriptor",
@@ -7547,119 +8070,8 @@
},
{
"schema": "edfi",
- "name": "AssignmentLateStatusDescriptor",
- "locallyDefinedProperties": [],
- "identifiers": [
- {
- "identifierName": "AssignmentLateStatusDescriptor_PK",
- "identifyingPropertyNames": [
- "AssignmentLateStatusDescriptorId"
- ],
- "isPrimary": true,
- "isUpdatable": false,
- "constraintNames": {
- "sqlServer": "AssignmentLateStatusDescriptor_PK",
- "postgreSql": "AssignmentLateStatusDescriptor_PK"
- }
- }
- ],
- "isAbstract": false,
- "description": "Status of whether the assignment was submitted after the due date and/or marked as late.",
- "tableNames": {
- "sqlServer": "AssignmentLateStatusDescriptor",
- "postgreSql": "AssignmentLateStatusDescriptor"
- }
- },
- {
- "schema": "edfi",
- "name": "AttemptStatusDescriptor",
- "locallyDefinedProperties": [],
- "identifiers": [
- {
- "identifierName": "AttemptStatusDescriptor_PK",
- "identifyingPropertyNames": [
- "AttemptStatusDescriptorId"
- ],
- "isPrimary": true,
- "isUpdatable": false,
- "constraintNames": {
- "sqlServer": "AttemptStatusDescriptor_PK",
- "postgreSql": "AttemptStatusDescriptor_PK"
- }
- }
- ],
- "isAbstract": false,
- "description": "This descriptor describes a student's completion status for a section.",
- "tableNames": {
- "sqlServer": "AttemptStatusDescriptor",
- "postgreSql": "AttemptStatusDescriptor"
- }
- },
- {
- "schema": "edfi",
- "name": "AttendanceEventCategoryDescriptor",
- "locallyDefinedProperties": [],
- "identifiers": [
- {
- "identifierName": "AttendanceEventCategoryDescriptor_PK",
- "identifyingPropertyNames": [
- "AttendanceEventCategoryDescriptorId"
- ],
- "isPrimary": true,
- "isUpdatable": false,
- "constraintNames": {
- "sqlServer": "AttendanceEventCategoryDescriptor_PK",
- "postgreSql": "AttendanceEventCategoryDescriptor_PK"
- }
- }
- ],
- "isAbstract": false,
- "description": "This descriptor holds the category of the attendance event (e.g., tardy).",
- "tableNames": {
- "sqlServer": "AttendanceEventCategoryDescriptor",
- "postgreSql": "AttendanceEventCategoryDescriptor"
- }
- },
- {
- "schema": "edfi",
- "name": "BalanceSheetDimension",
+ "name": "AssesssmentAdministrationParticipation",
"locallyDefinedProperties": [
- {
- "propertyName": "Code",
- "propertyType": {
- "dbType": "String",
- "minLength": 0,
- "maxLength": 16,
- "precision": 0,
- "scale": 0,
- "isNullable": false
- },
- "description": "The code representation of the account balance sheet dimension.",
- "isIdentifying": true,
- "isServerAssigned": false,
- "columnNames": {
- "sqlServer": "Code",
- "postgreSql": "Code"
- }
- },
- {
- "propertyName": "CodeName",
- "propertyType": {
- "dbType": "String",
- "minLength": 0,
- "maxLength": 100,
- "precision": 0,
- "scale": 0,
- "isNullable": true
- },
- "description": "A description of the account balance sheet dimension.",
- "isIdentifying": false,
- "isServerAssigned": false,
- "columnNames": {
- "sqlServer": "CodeName",
- "postgreSql": "CodeName"
- }
- },
{
"propertyName": "CreateDate",
"propertyType": {
@@ -7677,25 +8089,350 @@
"postgreSql": "CreateDate"
}
},
- {
- "propertyName": "FiscalYear",
- "propertyType": {
- "dbType": "Int32",
- "maxLength": 0,
- "precision": 10,
- "scale": 0,
- "isNullable": false,
- "minValue": 2020,
- "maxValue": 2040
- },
- "description": "The fiscal year for which the account balance sheet dimension is valid.",
- "isIdentifying": true,
- "isServerAssigned": false,
- "columnNames": {
- "sqlServer": "FiscalYear",
- "postgreSql": "FiscalYear"
- }
- },
+ {
+ "propertyName": "Id",
+ "propertyType": {
+ "dbType": "Guid",
+ "maxLength": 0,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "",
+ "isIdentifying": false,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "Id",
+ "postgreSql": "Id"
+ }
+ },
+ {
+ "propertyName": "LastModifiedDate",
+ "propertyType": {
+ "dbType": "DateTime2",
+ "maxLength": 0,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "",
+ "isIdentifying": false,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "LastModifiedDate",
+ "postgreSql": "LastModifiedDate"
+ }
+ }
+ ],
+ "identifiers": [
+ {
+ "identifierName": "AssesssmentAdministrationParticipation_PK",
+ "identifyingPropertyNames": [
+ "AdministrationIdentifier",
+ "AssessmentIdentifier",
+ "AssigningEducationOrganizationId",
+ "Namespace",
+ "ParticipatingEducationOrganizationId"
+ ],
+ "isPrimary": true,
+ "isUpdatable": false,
+ "constraintNames": {
+ "sqlServer": "AssesssmentAdministrationParticipation_PK",
+ "postgreSql": "AssesssmentAdministrationParticipation_PK"
+ }
+ },
+ {
+ "identifierName": "UX_AssesssmentAdministrationParticipation_Id",
+ "identifyingPropertyNames": [
+ "Id"
+ ],
+ "isPrimary": false,
+ "isUpdatable": false,
+ "constraintNames": {
+ "sqlServer": "UX_AssesssmentAdministrationParticipation_Id",
+ "postgreSql": "UX_0b52ab_Id"
+ }
+ }
+ ],
+ "isAbstract": false,
+ "description": "Identifies the point of contact for the administration of an assessment under the purview of an education organization.",
+ "tableNames": {
+ "sqlServer": "AssesssmentAdministrationParticipation",
+ "postgreSql": "AssesssmentAdministrationParticipation"
+ }
+ },
+ {
+ "schema": "edfi",
+ "name": "AssesssmentAdministrationParticipationAdministrationPointOfContact",
+ "locallyDefinedProperties": [
+ {
+ "propertyName": "CreateDate",
+ "propertyType": {
+ "dbType": "DateTime2",
+ "maxLength": 0,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "",
+ "isIdentifying": false,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "CreateDate",
+ "postgreSql": "CreateDate"
+ }
+ },
+ {
+ "propertyName": "ElectronicMailAddress",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 7,
+ "maxLength": 128,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The email address for the contact.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "ElectronicMailAddress",
+ "postgreSql": "ElectronicMailAddress"
+ }
+ },
+ {
+ "propertyName": "FirstName",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 75,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The contact's first name.",
+ "isIdentifying": false,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "FirstName",
+ "postgreSql": "FirstName"
+ }
+ },
+ {
+ "propertyName": "LastSurname",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 75,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The contact's last name.",
+ "isIdentifying": false,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "LastSurname",
+ "postgreSql": "LastSurname"
+ }
+ },
+ {
+ "propertyName": "LoginId",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 60,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": true
+ },
+ "description": "The login ID for the user; used for security access control interface.",
+ "isIdentifying": false,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "LoginId",
+ "postgreSql": "LoginId"
+ }
+ }
+ ],
+ "identifiers": [
+ {
+ "identifierName": "AssesssmentAdministrationParticipationAdministrationPointOfContact_PK",
+ "identifyingPropertyNames": [
+ "AdministrationIdentifier",
+ "AssessmentIdentifier",
+ "AssigningEducationOrganizationId",
+ "Namespace",
+ "ParticipatingEducationOrganizationId",
+ "EducationOrganizationId",
+ "ElectronicMailAddress"
+ ],
+ "isPrimary": true,
+ "isUpdatable": false,
+ "constraintNames": {
+ "sqlServer": "AssesssmentAdministrationParticipationAdministrationPointOfContact_PK",
+ "postgreSql": "AssesssmentAdministrationParticipationAdministrati_c21adc_PK"
+ }
+ }
+ ],
+ "isAbstract": false,
+ "description": "Pre-identified contacts for education organizations administering the assessment.",
+ "tableNames": {
+ "sqlServer": "AssesssmentAdministrationParticipationAdministrationPointOfContact",
+ "postgreSql": "AssesssmentAdministrationParticipationAdministrationPoin_c21adc"
+ }
+ },
+ {
+ "schema": "edfi",
+ "name": "AssignmentLateStatusDescriptor",
+ "locallyDefinedProperties": [],
+ "identifiers": [
+ {
+ "identifierName": "AssignmentLateStatusDescriptor_PK",
+ "identifyingPropertyNames": [
+ "AssignmentLateStatusDescriptorId"
+ ],
+ "isPrimary": true,
+ "isUpdatable": false,
+ "constraintNames": {
+ "sqlServer": "AssignmentLateStatusDescriptor_PK",
+ "postgreSql": "AssignmentLateStatusDescriptor_PK"
+ }
+ }
+ ],
+ "isAbstract": false,
+ "description": "Status of whether the assignment was submitted after the due date and/or marked as late.",
+ "tableNames": {
+ "sqlServer": "AssignmentLateStatusDescriptor",
+ "postgreSql": "AssignmentLateStatusDescriptor"
+ }
+ },
+ {
+ "schema": "edfi",
+ "name": "AttemptStatusDescriptor",
+ "locallyDefinedProperties": [],
+ "identifiers": [
+ {
+ "identifierName": "AttemptStatusDescriptor_PK",
+ "identifyingPropertyNames": [
+ "AttemptStatusDescriptorId"
+ ],
+ "isPrimary": true,
+ "isUpdatable": false,
+ "constraintNames": {
+ "sqlServer": "AttemptStatusDescriptor_PK",
+ "postgreSql": "AttemptStatusDescriptor_PK"
+ }
+ }
+ ],
+ "isAbstract": false,
+ "description": "This descriptor describes a student's completion status for a section.",
+ "tableNames": {
+ "sqlServer": "AttemptStatusDescriptor",
+ "postgreSql": "AttemptStatusDescriptor"
+ }
+ },
+ {
+ "schema": "edfi",
+ "name": "AttendanceEventCategoryDescriptor",
+ "locallyDefinedProperties": [],
+ "identifiers": [
+ {
+ "identifierName": "AttendanceEventCategoryDescriptor_PK",
+ "identifyingPropertyNames": [
+ "AttendanceEventCategoryDescriptorId"
+ ],
+ "isPrimary": true,
+ "isUpdatable": false,
+ "constraintNames": {
+ "sqlServer": "AttendanceEventCategoryDescriptor_PK",
+ "postgreSql": "AttendanceEventCategoryDescriptor_PK"
+ }
+ }
+ ],
+ "isAbstract": false,
+ "description": "This descriptor holds the category of the attendance event (e.g., tardy).",
+ "tableNames": {
+ "sqlServer": "AttendanceEventCategoryDescriptor",
+ "postgreSql": "AttendanceEventCategoryDescriptor"
+ }
+ },
+ {
+ "schema": "edfi",
+ "name": "BalanceSheetDimension",
+ "locallyDefinedProperties": [
+ {
+ "propertyName": "Code",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 16,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The code representation of the account balance sheet dimension.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "Code",
+ "postgreSql": "Code"
+ }
+ },
+ {
+ "propertyName": "CodeName",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 100,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": true
+ },
+ "description": "A description of the account balance sheet dimension.",
+ "isIdentifying": false,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "CodeName",
+ "postgreSql": "CodeName"
+ }
+ },
+ {
+ "propertyName": "CreateDate",
+ "propertyType": {
+ "dbType": "DateTime2",
+ "maxLength": 0,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "",
+ "isIdentifying": false,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "CreateDate",
+ "postgreSql": "CreateDate"
+ }
+ },
+ {
+ "propertyName": "FiscalYear",
+ "propertyType": {
+ "dbType": "Int32",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false,
+ "minValue": 2020,
+ "maxValue": 2040
+ },
+ "description": "The fiscal year for which the account balance sheet dimension is valid.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "FiscalYear",
+ "postgreSql": "FiscalYear"
+ }
+ },
{
"propertyName": "Id",
"propertyType": {
@@ -30301,6 +31038,31 @@
"postgreSql": "Section"
}
},
+ {
+ "schema": "edfi",
+ "name": "Section504DisabilityTypeDescriptor",
+ "locallyDefinedProperties": [],
+ "identifiers": [
+ {
+ "identifierName": "Section504DisabilityTypeDescriptor_PK",
+ "identifyingPropertyNames": [
+ "Section504DisabilityTypeDescriptorId"
+ ],
+ "isPrimary": true,
+ "isUpdatable": false,
+ "constraintNames": {
+ "sqlServer": "Section504DisabilityTypeDescriptor_PK",
+ "postgreSql": "Section504DisabilityTypeDescriptor_PK"
+ }
+ }
+ ],
+ "isAbstract": false,
+ "description": "This descriptor defines the reason(s) why student qualifies for Section 504 consideration.",
+ "tableNames": {
+ "sqlServer": "Section504DisabilityTypeDescriptor",
+ "postgreSql": "Section504DisabilityTypeDescriptor"
+ }
+ },
{
"schema": "edfi",
"name": "SectionAttendanceTakenEvent",
@@ -38120,7 +38882,7 @@
},
{
"schema": "edfi",
- "name": "StudentAssessmentScoreResult",
+ "name": "StudentAssessmentRegistration",
"locallyDefinedProperties": [
{
"propertyName": "CreateDate",
@@ -38140,108 +38902,24 @@
}
},
{
- "propertyName": "Result",
- "propertyType": {
- "dbType": "String",
- "minLength": 0,
- "maxLength": 35,
- "precision": 0,
- "scale": 0,
- "isNullable": false
- },
- "description": "The value of a meaningful raw score or statistical expression of the performance of an individual. The results can be expressed as a number, percentile, range, level, etc.",
- "isIdentifying": false,
- "isServerAssigned": false,
- "columnNames": {
- "sqlServer": "Result",
- "postgreSql": "Result"
- }
- }
- ],
- "identifiers": [
- {
- "identifierName": "StudentAssessmentScoreResult_PK",
- "identifyingPropertyNames": [
- "AssessmentIdentifier",
- "Namespace",
- "StudentAssessmentIdentifier",
- "StudentUSI",
- "AssessmentReportingMethodDescriptorId"
- ],
- "isPrimary": true,
- "isUpdatable": false,
- "constraintNames": {
- "sqlServer": "StudentAssessmentScoreResult_PK",
- "postgreSql": "StudentAssessmentScoreResult_PK"
- }
- }
- ],
- "isAbstract": false,
- "description": "A meaningful score or statistical expression of the performance of an individual. The results can be expressed as a number, percentile, range, level, etc.",
- "tableNames": {
- "sqlServer": "StudentAssessmentScoreResult",
- "postgreSql": "StudentAssessmentScoreResult"
- }
- },
- {
- "schema": "edfi",
- "name": "StudentAssessmentStudentObjectiveAssessment",
- "locallyDefinedProperties": [
- {
- "propertyName": "AdministrationDate",
- "propertyType": {
- "dbType": "DateTime2",
- "minLength": 0,
- "maxLength": 0,
- "precision": 0,
- "scale": 0,
- "isNullable": true
- },
- "description": "The date and time an assessment was completed by the student. The use of ISO-8601 formats with a timezone designator (UTC or time offset) is recommended in order to prevent ambiguity due to time zones.",
- "isIdentifying": false,
- "isServerAssigned": false,
- "columnNames": {
- "sqlServer": "AdministrationDate",
- "postgreSql": "AdministrationDate"
- }
- },
- {
- "propertyName": "AdministrationEndDate",
+ "propertyName": "Id",
"propertyType": {
- "dbType": "DateTime2",
- "minLength": 0,
+ "dbType": "Guid",
"maxLength": 0,
"precision": 0,
"scale": 0,
- "isNullable": true
- },
- "description": "The date and time an assessment administration ended.",
- "isIdentifying": false,
- "isServerAssigned": false,
- "columnNames": {
- "sqlServer": "AdministrationEndDate",
- "postgreSql": "AdministrationEndDate"
- }
- },
- {
- "propertyName": "AssessedMinutes",
- "propertyType": {
- "dbType": "Int32",
- "maxLength": 0,
- "precision": 10,
- "scale": 0,
- "isNullable": true
+ "isNullable": false
},
- "description": "Reported time student was assessed in minutes.",
+ "description": "",
"isIdentifying": false,
"isServerAssigned": false,
"columnNames": {
- "sqlServer": "AssessedMinutes",
- "postgreSql": "AssessedMinutes"
+ "sqlServer": "Id",
+ "postgreSql": "Id"
}
},
{
- "propertyName": "CreateDate",
+ "propertyName": "LastModifiedDate",
"propertyType": {
"dbType": "DateTime2",
"maxLength": 0,
@@ -38253,39 +38931,52 @@
"isIdentifying": false,
"isServerAssigned": false,
"columnNames": {
- "sqlServer": "CreateDate",
- "postgreSql": "CreateDate"
+ "sqlServer": "LastModifiedDate",
+ "postgreSql": "LastModifiedDate"
}
}
],
"identifiers": [
{
- "identifierName": "StudentAssessmentStudentObjectiveAssessment_PK",
+ "identifierName": "StudentAssessmentRegistration_PK",
"identifyingPropertyNames": [
+ "AdministrationIdentifier",
"AssessmentIdentifier",
+ "AssigningEducationOrganizationId",
+ "EducationOrganizationId",
"Namespace",
- "StudentAssessmentIdentifier",
- "StudentUSI",
- "IdentificationCode"
+ "StudentUSI"
],
"isPrimary": true,
"isUpdatable": false,
"constraintNames": {
- "sqlServer": "StudentAssessmentStudentObjectiveAssessment_PK",
- "postgreSql": "StudentAssessmentStudentObjectiveAssessment_PK"
+ "sqlServer": "StudentAssessmentRegistration_PK",
+ "postgreSql": "StudentAssessmentRegistration_PK"
+ }
+ },
+ {
+ "identifierName": "UX_StudentAssessmentRegistration_Id",
+ "identifyingPropertyNames": [
+ "Id"
+ ],
+ "isPrimary": false,
+ "isUpdatable": false,
+ "constraintNames": {
+ "sqlServer": "UX_StudentAssessmentRegistration_Id",
+ "postgreSql": "UX_79fd6b_Id"
}
}
],
"isAbstract": false,
- "description": "The student's score and/or performance levels earned for an objective assessment.",
+ "description": "Identifies an assessment registration that a student is expected to participate in including the testing organization, reporting organization and assessment delivery details.",
"tableNames": {
- "sqlServer": "StudentAssessmentStudentObjectiveAssessment",
- "postgreSql": "StudentAssessmentStudentObjectiveAssessment"
+ "sqlServer": "StudentAssessmentRegistration",
+ "postgreSql": "StudentAssessmentRegistration"
}
},
{
"schema": "edfi",
- "name": "StudentAssessmentStudentObjectiveAssessmentPerformanceLevel",
+ "name": "StudentAssessmentRegistrationAssessmentAccommodation",
"locallyDefinedProperties": [
{
"propertyName": "CreateDate",
@@ -38303,56 +38994,38 @@
"sqlServer": "CreateDate",
"postgreSql": "CreateDate"
}
- },
- {
- "propertyName": "PerformanceLevelIndicatorName",
- "propertyType": {
- "dbType": "String",
- "minLength": 0,
- "maxLength": 60,
- "precision": 0,
- "scale": 0,
- "isNullable": true
- },
- "description": "The name of the indicator being measured for a collection of performance level values.",
- "isIdentifying": false,
- "isServerAssigned": false,
- "columnNames": {
- "sqlServer": "PerformanceLevelIndicatorName",
- "postgreSql": "PerformanceLevelIndicatorName"
- }
}
],
"identifiers": [
{
- "identifierName": "StudentAssessmentStudentObjectiveAssessmentPerformanceLevel_PK",
+ "identifierName": "StudentAssessmentRegistrationAssessmentAccommodation_PK",
"identifyingPropertyNames": [
+ "AdministrationIdentifier",
"AssessmentIdentifier",
+ "AssigningEducationOrganizationId",
+ "EducationOrganizationId",
"Namespace",
- "StudentAssessmentIdentifier",
"StudentUSI",
- "IdentificationCode",
- "AssessmentReportingMethodDescriptorId",
- "PerformanceLevelDescriptorId"
+ "AccommodationDescriptorId"
],
"isPrimary": true,
"isUpdatable": false,
"constraintNames": {
- "sqlServer": "StudentAssessmentStudentObjectiveAssessmentPerformanceLevel_PK",
- "postgreSql": "StudentAssessmentStudentObjectiveAssessmentPerformanceLevel_PK"
+ "sqlServer": "StudentAssessmentRegistrationAssessmentAccommodation_PK",
+ "postgreSql": "StudentAssessmentRegistrationAssessmentAccommodation_PK"
}
}
],
"isAbstract": false,
- "description": "The performance level(s) achieved for the objective assessment.",
+ "description": "The special variation(s) to be used in how assessments (in general) are presented, how it is administered, or how the test taker is allowed to respond. This generally refers to changes that do not substantially alter what the examination measures. The proper use of accommodations does not substantially change academic level or performance criteria.",
"tableNames": {
- "sqlServer": "StudentAssessmentStudentObjectiveAssessmentPerformanceLevel",
- "postgreSql": "StudentAssessmentStudentObjectiveAssessmentPerformanceLevel"
+ "sqlServer": "StudentAssessmentRegistrationAssessmentAccommodation",
+ "postgreSql": "StudentAssessmentRegistrationAssessmentAccommodation"
}
},
{
"schema": "edfi",
- "name": "StudentAssessmentStudentObjectiveAssessmentScoreResult",
+ "name": "StudentAssessmentRegistrationAssessmentCustomization",
"locallyDefinedProperties": [
{
"propertyName": "CreateDate",
@@ -38372,97 +39045,73 @@
}
},
{
- "propertyName": "Result",
+ "propertyName": "CustomizationKey",
"propertyType": {
"dbType": "String",
"minLength": 0,
- "maxLength": 35,
+ "maxLength": 60,
"precision": 0,
"scale": 0,
"isNullable": false
},
- "description": "The value of a meaningful raw score or statistical expression of the performance of an individual. The results can be expressed as a number, percentile, range, level, etc.",
+ "description": "An agreed upon identifier for the custom information.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "CustomizationKey",
+ "postgreSql": "CustomizationKey"
+ }
+ },
+ {
+ "propertyName": "CustomizationValue",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 1024,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "Custom value for the indicated CustomizationKey.",
"isIdentifying": false,
"isServerAssigned": false,
"columnNames": {
- "sqlServer": "Result",
- "postgreSql": "Result"
+ "sqlServer": "CustomizationValue",
+ "postgreSql": "CustomizationValue"
}
}
],
"identifiers": [
{
- "identifierName": "StudentAssessmentStudentObjectiveAssessmentScoreResult_PK",
+ "identifierName": "StudentAssessmentRegistrationAssessmentCustomization_PK",
"identifyingPropertyNames": [
+ "AdministrationIdentifier",
"AssessmentIdentifier",
+ "AssigningEducationOrganizationId",
+ "EducationOrganizationId",
"Namespace",
- "StudentAssessmentIdentifier",
"StudentUSI",
- "IdentificationCode",
- "AssessmentReportingMethodDescriptorId"
- ],
- "isPrimary": true,
- "isUpdatable": false,
- "constraintNames": {
- "sqlServer": "StudentAssessmentStudentObjectiveAssessmentScoreResult_PK",
- "postgreSql": "StudentAssessmentStudentObjectiveAssessmentScoreResult_PK"
- }
- }
- ],
- "isAbstract": false,
- "description": "A meaningful score or statistical expression of the performance of an individual. The results can be expressed as a number, percentile, range, level, etc.",
- "tableNames": {
- "sqlServer": "StudentAssessmentStudentObjectiveAssessmentScoreResult",
- "postgreSql": "StudentAssessmentStudentObjectiveAssessmentScoreResult"
- }
- },
- {
- "schema": "edfi",
- "name": "StudentCharacteristicDescriptor",
- "locallyDefinedProperties": [],
- "identifiers": [
- {
- "identifierName": "StudentCharacteristicDescriptor_PK",
- "identifyingPropertyNames": [
- "StudentCharacteristicDescriptorId"
+ "CustomizationKey"
],
"isPrimary": true,
"isUpdatable": false,
"constraintNames": {
- "sqlServer": "StudentCharacteristicDescriptor_PK",
- "postgreSql": "StudentCharacteristicDescriptor_PK"
+ "sqlServer": "StudentAssessmentRegistrationAssessmentCustomization_PK",
+ "postgreSql": "StudentAssessmentRegistrationAssessmentCustomization_PK"
}
}
],
"isAbstract": false,
- "description": "This descriptor captures important characteristics of the student's environment or situation. Generally used for non-program-based student characteristics.",
+ "description": "Key/value pairs which may be used to facilitate customization of an assessment or to support vendor reporting/analysis.",
"tableNames": {
- "sqlServer": "StudentCharacteristicDescriptor",
- "postgreSql": "StudentCharacteristicDescriptor"
+ "sqlServer": "StudentAssessmentRegistrationAssessmentCustomization",
+ "postgreSql": "StudentAssessmentRegistrationAssessmentCustomization"
}
},
{
"schema": "edfi",
- "name": "StudentCohortAssociation",
+ "name": "StudentAssessmentRegistrationBatteryPartAssociation",
"locallyDefinedProperties": [
- {
- "propertyName": "BeginDate",
- "propertyType": {
- "dbType": "Date",
- "minLength": 0,
- "maxLength": 0,
- "precision": 0,
- "scale": 0,
- "isNullable": false
- },
- "description": "The month, day, and year on which the student was first identified as part of the cohort. Note: Date interpretation may vary. Ed-Fi recommends inclusive dates, but states may define dates as inclusive or exclusive. For calculations, align with local guidelines.",
- "isIdentifying": true,
- "isServerAssigned": false,
- "columnNames": {
- "sqlServer": "BeginDate",
- "postgreSql": "BeginDate"
- }
- },
{
"propertyName": "CreateDate",
"propertyType": {
@@ -38480,24 +39129,510 @@
"postgreSql": "CreateDate"
}
},
- {
- "propertyName": "EndDate",
- "propertyType": {
- "dbType": "Date",
- "minLength": 0,
- "maxLength": 0,
- "precision": 0,
- "scale": 0,
- "isNullable": true
- },
- "description": "The month, day, and year on which the student was removed as part of the cohort. Note: Date interpretation may vary. Ed-Fi recommends inclusive dates, but states may define dates as inclusive or exclusive. For calculations, align with local guidelines.",
- "isIdentifying": false,
- "isServerAssigned": false,
- "columnNames": {
- "sqlServer": "EndDate",
- "postgreSql": "EndDate"
- }
- },
+ {
+ "propertyName": "Id",
+ "propertyType": {
+ "dbType": "Guid",
+ "maxLength": 0,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "",
+ "isIdentifying": false,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "Id",
+ "postgreSql": "Id"
+ }
+ },
+ {
+ "propertyName": "LastModifiedDate",
+ "propertyType": {
+ "dbType": "DateTime2",
+ "maxLength": 0,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "",
+ "isIdentifying": false,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "LastModifiedDate",
+ "postgreSql": "LastModifiedDate"
+ }
+ }
+ ],
+ "identifiers": [
+ {
+ "identifierName": "StudentAssessmentRegistrationBatteryPartAssociation_PK",
+ "identifyingPropertyNames": [
+ "AdministrationIdentifier",
+ "AssessmentBatteryPartName",
+ "AssessmentIdentifier",
+ "AssigningEducationOrganizationId",
+ "EducationOrganizationId",
+ "Namespace",
+ "StudentUSI"
+ ],
+ "isPrimary": true,
+ "isUpdatable": false,
+ "constraintNames": {
+ "sqlServer": "StudentAssessmentRegistrationBatteryPartAssociation_PK",
+ "postgreSql": "StudentAssessmentRegistrationBatteryPartAssociation_PK"
+ }
+ },
+ {
+ "identifierName": "UX_StudentAssessmentRegistrationBatteryPartAssociation_Id",
+ "identifyingPropertyNames": [
+ "Id"
+ ],
+ "isPrimary": false,
+ "isUpdatable": false,
+ "constraintNames": {
+ "sqlServer": "UX_StudentAssessmentRegistrationBatteryPartAssociation_Id",
+ "postgreSql": "UX_3bb369_Id"
+ }
+ }
+ ],
+ "isAbstract": false,
+ "description": "The association to the part(s) of the assessment battery that the student is to be tested for this administration of the assessment.",
+ "tableNames": {
+ "sqlServer": "StudentAssessmentRegistrationBatteryPartAssociation",
+ "postgreSql": "StudentAssessmentRegistrationBatteryPartAssociation"
+ }
+ },
+ {
+ "schema": "edfi",
+ "name": "StudentAssessmentRegistrationBatteryPartAssociationAccommodation",
+ "locallyDefinedProperties": [
+ {
+ "propertyName": "CreateDate",
+ "propertyType": {
+ "dbType": "DateTime2",
+ "maxLength": 0,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "",
+ "isIdentifying": false,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "CreateDate",
+ "postgreSql": "CreateDate"
+ }
+ }
+ ],
+ "identifiers": [
+ {
+ "identifierName": "StudentAssessmentRegistrationBatteryPartAssociationAccommodation_PK",
+ "identifyingPropertyNames": [
+ "AdministrationIdentifier",
+ "AssessmentBatteryPartName",
+ "AssessmentIdentifier",
+ "AssigningEducationOrganizationId",
+ "EducationOrganizationId",
+ "Namespace",
+ "StudentUSI",
+ "AccommodationDescriptorId"
+ ],
+ "isPrimary": true,
+ "isUpdatable": false,
+ "constraintNames": {
+ "sqlServer": "StudentAssessmentRegistrationBatteryPartAssociationAccommodation_PK",
+ "postgreSql": "StudentAssessmentRegistrationBatteryPartAssociatio_c87694_PK"
+ }
+ }
+ ],
+ "isAbstract": false,
+ "description": "The special variation(s) to be used for the specific part of the assessment battery on how is presented, how it is administered, or how the test taker is allowed to respond.",
+ "tableNames": {
+ "sqlServer": "StudentAssessmentRegistrationBatteryPartAssociationAccommodation",
+ "postgreSql": "StudentAssessmentRegistrationBatteryPartAssociationAccom_c87694"
+ }
+ },
+ {
+ "schema": "edfi",
+ "name": "StudentAssessmentScoreResult",
+ "locallyDefinedProperties": [
+ {
+ "propertyName": "CreateDate",
+ "propertyType": {
+ "dbType": "DateTime2",
+ "maxLength": 0,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "",
+ "isIdentifying": false,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "CreateDate",
+ "postgreSql": "CreateDate"
+ }
+ },
+ {
+ "propertyName": "Result",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 35,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The value of a meaningful raw score or statistical expression of the performance of an individual. The results can be expressed as a number, percentile, range, level, etc.",
+ "isIdentifying": false,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "Result",
+ "postgreSql": "Result"
+ }
+ }
+ ],
+ "identifiers": [
+ {
+ "identifierName": "StudentAssessmentScoreResult_PK",
+ "identifyingPropertyNames": [
+ "AssessmentIdentifier",
+ "Namespace",
+ "StudentAssessmentIdentifier",
+ "StudentUSI",
+ "AssessmentReportingMethodDescriptorId"
+ ],
+ "isPrimary": true,
+ "isUpdatable": false,
+ "constraintNames": {
+ "sqlServer": "StudentAssessmentScoreResult_PK",
+ "postgreSql": "StudentAssessmentScoreResult_PK"
+ }
+ }
+ ],
+ "isAbstract": false,
+ "description": "A meaningful score or statistical expression of the performance of an individual. The results can be expressed as a number, percentile, range, level, etc.",
+ "tableNames": {
+ "sqlServer": "StudentAssessmentScoreResult",
+ "postgreSql": "StudentAssessmentScoreResult"
+ }
+ },
+ {
+ "schema": "edfi",
+ "name": "StudentAssessmentStudentObjectiveAssessment",
+ "locallyDefinedProperties": [
+ {
+ "propertyName": "AdministrationDate",
+ "propertyType": {
+ "dbType": "DateTime2",
+ "minLength": 0,
+ "maxLength": 0,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": true
+ },
+ "description": "The date and time an assessment was completed by the student. The use of ISO-8601 formats with a timezone designator (UTC or time offset) is recommended in order to prevent ambiguity due to time zones.",
+ "isIdentifying": false,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AdministrationDate",
+ "postgreSql": "AdministrationDate"
+ }
+ },
+ {
+ "propertyName": "AdministrationEndDate",
+ "propertyType": {
+ "dbType": "DateTime2",
+ "minLength": 0,
+ "maxLength": 0,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": true
+ },
+ "description": "The date and time an assessment administration ended.",
+ "isIdentifying": false,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AdministrationEndDate",
+ "postgreSql": "AdministrationEndDate"
+ }
+ },
+ {
+ "propertyName": "AssessedMinutes",
+ "propertyType": {
+ "dbType": "Int32",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": true
+ },
+ "description": "Reported time student was assessed in minutes.",
+ "isIdentifying": false,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AssessedMinutes",
+ "postgreSql": "AssessedMinutes"
+ }
+ },
+ {
+ "propertyName": "CreateDate",
+ "propertyType": {
+ "dbType": "DateTime2",
+ "maxLength": 0,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "",
+ "isIdentifying": false,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "CreateDate",
+ "postgreSql": "CreateDate"
+ }
+ }
+ ],
+ "identifiers": [
+ {
+ "identifierName": "StudentAssessmentStudentObjectiveAssessment_PK",
+ "identifyingPropertyNames": [
+ "AssessmentIdentifier",
+ "Namespace",
+ "StudentAssessmentIdentifier",
+ "StudentUSI",
+ "IdentificationCode"
+ ],
+ "isPrimary": true,
+ "isUpdatable": false,
+ "constraintNames": {
+ "sqlServer": "StudentAssessmentStudentObjectiveAssessment_PK",
+ "postgreSql": "StudentAssessmentStudentObjectiveAssessment_PK"
+ }
+ }
+ ],
+ "isAbstract": false,
+ "description": "The student's score and/or performance levels earned for an objective assessment.",
+ "tableNames": {
+ "sqlServer": "StudentAssessmentStudentObjectiveAssessment",
+ "postgreSql": "StudentAssessmentStudentObjectiveAssessment"
+ }
+ },
+ {
+ "schema": "edfi",
+ "name": "StudentAssessmentStudentObjectiveAssessmentPerformanceLevel",
+ "locallyDefinedProperties": [
+ {
+ "propertyName": "CreateDate",
+ "propertyType": {
+ "dbType": "DateTime2",
+ "maxLength": 0,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "",
+ "isIdentifying": false,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "CreateDate",
+ "postgreSql": "CreateDate"
+ }
+ },
+ {
+ "propertyName": "PerformanceLevelIndicatorName",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 60,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": true
+ },
+ "description": "The name of the indicator being measured for a collection of performance level values.",
+ "isIdentifying": false,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "PerformanceLevelIndicatorName",
+ "postgreSql": "PerformanceLevelIndicatorName"
+ }
+ }
+ ],
+ "identifiers": [
+ {
+ "identifierName": "StudentAssessmentStudentObjectiveAssessmentPerformanceLevel_PK",
+ "identifyingPropertyNames": [
+ "AssessmentIdentifier",
+ "Namespace",
+ "StudentAssessmentIdentifier",
+ "StudentUSI",
+ "IdentificationCode",
+ "AssessmentReportingMethodDescriptorId",
+ "PerformanceLevelDescriptorId"
+ ],
+ "isPrimary": true,
+ "isUpdatable": false,
+ "constraintNames": {
+ "sqlServer": "StudentAssessmentStudentObjectiveAssessmentPerformanceLevel_PK",
+ "postgreSql": "StudentAssessmentStudentObjectiveAssessmentPerformanceLevel_PK"
+ }
+ }
+ ],
+ "isAbstract": false,
+ "description": "The performance level(s) achieved for the objective assessment.",
+ "tableNames": {
+ "sqlServer": "StudentAssessmentStudentObjectiveAssessmentPerformanceLevel",
+ "postgreSql": "StudentAssessmentStudentObjectiveAssessmentPerformanceLevel"
+ }
+ },
+ {
+ "schema": "edfi",
+ "name": "StudentAssessmentStudentObjectiveAssessmentScoreResult",
+ "locallyDefinedProperties": [
+ {
+ "propertyName": "CreateDate",
+ "propertyType": {
+ "dbType": "DateTime2",
+ "maxLength": 0,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "",
+ "isIdentifying": false,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "CreateDate",
+ "postgreSql": "CreateDate"
+ }
+ },
+ {
+ "propertyName": "Result",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 35,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The value of a meaningful raw score or statistical expression of the performance of an individual. The results can be expressed as a number, percentile, range, level, etc.",
+ "isIdentifying": false,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "Result",
+ "postgreSql": "Result"
+ }
+ }
+ ],
+ "identifiers": [
+ {
+ "identifierName": "StudentAssessmentStudentObjectiveAssessmentScoreResult_PK",
+ "identifyingPropertyNames": [
+ "AssessmentIdentifier",
+ "Namespace",
+ "StudentAssessmentIdentifier",
+ "StudentUSI",
+ "IdentificationCode",
+ "AssessmentReportingMethodDescriptorId"
+ ],
+ "isPrimary": true,
+ "isUpdatable": false,
+ "constraintNames": {
+ "sqlServer": "StudentAssessmentStudentObjectiveAssessmentScoreResult_PK",
+ "postgreSql": "StudentAssessmentStudentObjectiveAssessmentScoreResult_PK"
+ }
+ }
+ ],
+ "isAbstract": false,
+ "description": "A meaningful score or statistical expression of the performance of an individual. The results can be expressed as a number, percentile, range, level, etc.",
+ "tableNames": {
+ "sqlServer": "StudentAssessmentStudentObjectiveAssessmentScoreResult",
+ "postgreSql": "StudentAssessmentStudentObjectiveAssessmentScoreResult"
+ }
+ },
+ {
+ "schema": "edfi",
+ "name": "StudentCharacteristicDescriptor",
+ "locallyDefinedProperties": [],
+ "identifiers": [
+ {
+ "identifierName": "StudentCharacteristicDescriptor_PK",
+ "identifyingPropertyNames": [
+ "StudentCharacteristicDescriptorId"
+ ],
+ "isPrimary": true,
+ "isUpdatable": false,
+ "constraintNames": {
+ "sqlServer": "StudentCharacteristicDescriptor_PK",
+ "postgreSql": "StudentCharacteristicDescriptor_PK"
+ }
+ }
+ ],
+ "isAbstract": false,
+ "description": "This descriptor captures important characteristics of the student's environment or situation. Generally used for non-program-based student characteristics.",
+ "tableNames": {
+ "sqlServer": "StudentCharacteristicDescriptor",
+ "postgreSql": "StudentCharacteristicDescriptor"
+ }
+ },
+ {
+ "schema": "edfi",
+ "name": "StudentCohortAssociation",
+ "locallyDefinedProperties": [
+ {
+ "propertyName": "BeginDate",
+ "propertyType": {
+ "dbType": "Date",
+ "minLength": 0,
+ "maxLength": 0,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The month, day, and year on which the student was first identified as part of the cohort. Note: Date interpretation may vary. Ed-Fi recommends inclusive dates, but states may define dates as inclusive or exclusive. For calculations, align with local guidelines.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "BeginDate",
+ "postgreSql": "BeginDate"
+ }
+ },
+ {
+ "propertyName": "CreateDate",
+ "propertyType": {
+ "dbType": "DateTime2",
+ "maxLength": 0,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "",
+ "isIdentifying": false,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "CreateDate",
+ "postgreSql": "CreateDate"
+ }
+ },
+ {
+ "propertyName": "EndDate",
+ "propertyType": {
+ "dbType": "Date",
+ "minLength": 0,
+ "maxLength": 0,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": true
+ },
+ "description": "The month, day, and year on which the student was removed as part of the cohort. Note: Date interpretation may vary. Ed-Fi recommends inclusive dates, but states may define dates as inclusive or exclusive. For calculations, align with local guidelines.",
+ "isIdentifying": false,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "EndDate",
+ "postgreSql": "EndDate"
+ }
+ },
{
"propertyName": "Id",
"propertyType": {
@@ -39524,6 +40659,141 @@
"postgreSql": "StudentDisciplineIncidentNonOffenderAssociationDisciplin_4c979a"
}
},
+ {
+ "schema": "edfi",
+ "name": "StudentEducationOrganizationAssessmentAccommodation",
+ "locallyDefinedProperties": [
+ {
+ "propertyName": "CreateDate",
+ "propertyType": {
+ "dbType": "DateTime2",
+ "maxLength": 0,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "",
+ "isIdentifying": false,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "CreateDate",
+ "postgreSql": "CreateDate"
+ }
+ },
+ {
+ "propertyName": "Id",
+ "propertyType": {
+ "dbType": "Guid",
+ "maxLength": 0,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "",
+ "isIdentifying": false,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "Id",
+ "postgreSql": "Id"
+ }
+ },
+ {
+ "propertyName": "LastModifiedDate",
+ "propertyType": {
+ "dbType": "DateTime2",
+ "maxLength": 0,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "",
+ "isIdentifying": false,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "LastModifiedDate",
+ "postgreSql": "LastModifiedDate"
+ }
+ }
+ ],
+ "identifiers": [
+ {
+ "identifierName": "StudentEducationOrganizationAssessmentAccommodation_PK",
+ "identifyingPropertyNames": [
+ "EducationOrganizationId",
+ "StudentUSI"
+ ],
+ "isPrimary": true,
+ "isUpdatable": false,
+ "constraintNames": {
+ "sqlServer": "StudentEducationOrganizationAssessmentAccommodation_PK",
+ "postgreSql": "StudentEducationOrganizationAssessmentAccommodation_PK"
+ }
+ },
+ {
+ "identifierName": "UX_StudentEducationOrganizationAssessmentAccommodation_Id",
+ "identifyingPropertyNames": [
+ "Id"
+ ],
+ "isPrimary": false,
+ "isUpdatable": false,
+ "constraintNames": {
+ "sqlServer": "UX_StudentEducationOrganizationAssessmentAccommodation_Id",
+ "postgreSql": "UX_5f4481_Id"
+ }
+ }
+ ],
+ "isAbstract": false,
+ "description": "The accommodation(s) required or expected for administering assessments as determined by the education organization.",
+ "tableNames": {
+ "sqlServer": "StudentEducationOrganizationAssessmentAccommodation",
+ "postgreSql": "StudentEducationOrganizationAssessmentAccommodation"
+ }
+ },
+ {
+ "schema": "edfi",
+ "name": "StudentEducationOrganizationAssessmentAccommodationGeneralAccommodation",
+ "locallyDefinedProperties": [
+ {
+ "propertyName": "CreateDate",
+ "propertyType": {
+ "dbType": "DateTime2",
+ "maxLength": 0,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "",
+ "isIdentifying": false,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "CreateDate",
+ "postgreSql": "CreateDate"
+ }
+ }
+ ],
+ "identifiers": [
+ {
+ "identifierName": "StudentEducationOrganizationAssessmentAccommodationGeneralAccommodation_PK",
+ "identifyingPropertyNames": [
+ "EducationOrganizationId",
+ "StudentUSI",
+ "AccommodationDescriptorId"
+ ],
+ "isPrimary": true,
+ "isUpdatable": false,
+ "constraintNames": {
+ "sqlServer": "StudentEducationOrganizationAssessmentAccommodationGeneralAccommodation_PK",
+ "postgreSql": "StudentEducationOrganizationAssessmentAccommodatio_d1d10a_PK"
+ }
+ }
+ ],
+ "isAbstract": false,
+ "description": "The special variation(s) to be used in how assessments (in general) are presented, how it is administered, or how the test taker is allowed to respond. This generally refers to changes that do not substantially alter what the examination measures. The proper use of accommodations does not substantially change academic level or performance criteria.",
+ "tableNames": {
+ "sqlServer": "StudentEducationOrganizationAssessmentAccommodationGeneralAccommodation",
+ "postgreSql": "StudentEducationOrganizationAssessmentAccommodationGener_d1d10a"
+ }
+ },
{
"schema": "edfi",
"name": "StudentEducationOrganizationAssociation",
@@ -45025,6 +46295,109 @@
"postgreSql": "StudentSchoolFoodServiceProgramAssociationSchoolFoodServ_85a0eb"
}
},
+ {
+ "schema": "edfi",
+ "name": "StudentSection504ProgramAssociation",
+ "locallyDefinedProperties": [
+ {
+ "propertyName": "AccommodationPlan",
+ "propertyType": {
+ "dbType": "Boolean",
+ "minLength": 0,
+ "maxLength": 0,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": true
+ },
+ "description": "Indicates whether student has a Section 504 accommodation plan.",
+ "isIdentifying": false,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AccommodationPlan",
+ "postgreSql": "AccommodationPlan"
+ }
+ },
+ {
+ "propertyName": "Section504Eligibility",
+ "propertyType": {
+ "dbType": "Boolean",
+ "minLength": 0,
+ "maxLength": 0,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "Indicates whether student has a disability, either temporary or permenant, that qualifies student for Section 504 consideration. Selection of FALSE for this boolean is equivalent to marking student as 'Did Not Qualify'.",
+ "isIdentifying": false,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "Section504Eligibility",
+ "postgreSql": "Section504Eligibility"
+ }
+ },
+ {
+ "propertyName": "Section504EligibilityDecisionDate",
+ "propertyType": {
+ "dbType": "Date",
+ "minLength": 0,
+ "maxLength": 0,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": true
+ },
+ "description": "The month, day, and year on which the Section 504 eligibility decision is made.",
+ "isIdentifying": false,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "Section504EligibilityDecisionDate",
+ "postgreSql": "Section504EligibilityDecisionDate"
+ }
+ },
+ {
+ "propertyName": "Section504MeetingDate",
+ "propertyType": {
+ "dbType": "Date",
+ "minLength": 0,
+ "maxLength": 0,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": true
+ },
+ "description": "The month, day, and year on which the meeting with student's parent/guardian held to discuss the 504 eligibility of the student.",
+ "isIdentifying": false,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "Section504MeetingDate",
+ "postgreSql": "Section504MeetingDate"
+ }
+ }
+ ],
+ "identifiers": [
+ {
+ "identifierName": "StudentSection504ProgramAssociation_PK",
+ "identifyingPropertyNames": [
+ "BeginDate",
+ "EducationOrganizationId",
+ "ProgramEducationOrganizationId",
+ "ProgramName",
+ "ProgramTypeDescriptorId",
+ "StudentUSI"
+ ],
+ "isPrimary": true,
+ "isUpdatable": false,
+ "constraintNames": {
+ "sqlServer": "StudentSection504ProgramAssociation_PK",
+ "postgreSql": "StudentSection504ProgramAssociation_PK"
+ }
+ }
+ ],
+ "isAbstract": false,
+ "description": "This association identifies student that qualifies for the Section 504 of the Rehabilitation Act of 1973.",
+ "tableNames": {
+ "sqlServer": "StudentSection504ProgramAssociation",
+ "postgreSql": "StudentSection504ProgramAssociation"
+ }
+ },
{
"schema": "edfi",
"name": "StudentSectionAssociation",
@@ -46377,6 +47750,7 @@
"identifyingPropertyNames": [
"ConsentToEvaluationReceivedDate",
"EducationOrganizationId",
+ "ProgramEducationOrganizationId",
"ProgramName",
"ProgramTypeDescriptorId",
"StudentUSI"
@@ -50442,7 +51816,7 @@
{
"fullName": {
"schema": "edfi",
- "name": "FK_AssessmentAssessedGradeLevel_Assessment"
+ "name": "FK_AssessmentAdministration_Assessment"
},
"cardinality": "OneToZeroOrMore",
"primaryEntityFullName": {
@@ -50489,7 +51863,7 @@
],
"secondaryEntityFullName": {
"schema": "edfi",
- "name": "AssessmentAssessedGradeLevel"
+ "name": "AssessmentAdministration"
},
"secondaryEntityProperties": [
{
@@ -50532,142 +51906,100 @@
"isIdentifying": true,
"isRequired": true,
"constraintNames": {
- "sqlServer": "FK_AssessmentAssessedGradeLevel_Assessment",
- "postgreSql": "FK_e83625_Assessment"
+ "sqlServer": "FK_AssessmentAdministration_Assessment",
+ "postgreSql": "FK_c64558_Assessment"
},
"potentiallyLogical": false
},
{
"fullName": {
"schema": "edfi",
- "name": "FK_AssessmentAssessedGradeLevel_GradeLevelDescriptor"
+ "name": "FK_AssessmentAdministration_EducationOrganization"
},
"cardinality": "OneToZeroOrMore",
"primaryEntityFullName": {
"schema": "edfi",
- "name": "GradeLevelDescriptor"
+ "name": "EducationOrganization"
},
"primaryEntityProperties": [
{
- "propertyName": "GradeLevelDescriptorId",
+ "propertyName": "EducationOrganizationId",
"propertyType": {
- "dbType": "Int32",
+ "dbType": "Int64",
"maxLength": 0,
"precision": 10,
"scale": 0,
"isNullable": false
},
- "description": "A unique identifier used as Primary Key, not derived from business logic, when acting as Foreign Key, references the parent table.",
+ "description": "The identifier assigned to an education organization.",
"isIdentifying": true,
"isServerAssigned": false,
"columnNames": {
- "sqlServer": "GradeLevelDescriptorId",
- "postgreSql": "GradeLevelDescriptorId"
+ "sqlServer": "EducationOrganizationId",
+ "postgreSql": "EducationOrganizationId"
}
}
],
"secondaryEntityFullName": {
"schema": "edfi",
- "name": "AssessmentAssessedGradeLevel"
+ "name": "AssessmentAdministration"
},
"secondaryEntityProperties": [
{
- "propertyName": "GradeLevelDescriptorId",
+ "propertyName": "AssigningEducationOrganizationId",
"propertyType": {
- "dbType": "Int32",
+ "dbType": "Int64",
"maxLength": 0,
"precision": 10,
"scale": 0,
"isNullable": false
},
- "description": "The grade level(s) for which an assessment is designed. The semantics of null is assumed to mean that the assessment is not associated with any grade level.",
+ "description": "The identifier assigned to an education organization.",
"isIdentifying": true,
"isServerAssigned": false,
"columnNames": {
- "sqlServer": "GradeLevelDescriptorId",
- "postgreSql": "GradeLevelDescriptorId"
+ "sqlServer": "AssigningEducationOrganizationId",
+ "postgreSql": "AssigningEducationOrganizationId"
}
}
],
"isIdentifying": true,
"isRequired": true,
"constraintNames": {
- "sqlServer": "FK_AssessmentAssessedGradeLevel_GradeLevelDescriptor",
- "postgreSql": "FK_e83625_GradeLevelDescriptor"
+ "sqlServer": "FK_AssessmentAdministration_EducationOrganization",
+ "postgreSql": "FK_c64558_EducationOrganization"
},
"potentiallyLogical": false
},
{
"fullName": {
"schema": "edfi",
- "name": "FK_AssessmentCategoryDescriptor_Descriptor"
+ "name": "FK_AssessmentAdministrationAssessmentAdminstrationPeriod_AssessmentAdministration"
},
- "cardinality": "OneToOneInheritance",
+ "cardinality": "OneToZeroOrMore",
"primaryEntityFullName": {
"schema": "edfi",
- "name": "Descriptor"
+ "name": "AssessmentAdministration"
},
"primaryEntityProperties": [
{
- "propertyName": "DescriptorId",
+ "propertyName": "AdministrationIdentifier",
"propertyType": {
- "dbType": "Int32",
- "maxLength": 0,
- "precision": 10,
- "scale": 0,
- "isNullable": false
- },
- "description": "A unique identifier used as Primary Key, not derived from business logic, when acting as Foreign Key, references the parent table.",
- "isIdentifying": true,
- "isServerAssigned": true,
- "columnNames": {
- "sqlServer": "DescriptorId",
- "postgreSql": "DescriptorId"
- }
- }
- ],
- "secondaryEntityFullName": {
- "schema": "edfi",
- "name": "AssessmentCategoryDescriptor"
- },
- "secondaryEntityProperties": [
- {
- "propertyName": "AssessmentCategoryDescriptorId",
- "propertyType": {
- "dbType": "Int32",
- "maxLength": 0,
- "precision": 10,
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 255,
+ "precision": 0,
"scale": 0,
"isNullable": false
},
- "description": "A unique identifier used as Primary Key, not derived from business logic, when acting as Foreign Key, references the parent table.",
+ "description": "The title or name of the assessment in the context of its administration.",
"isIdentifying": true,
- "isServerAssigned": true,
+ "isServerAssigned": false,
"columnNames": {
- "sqlServer": "AssessmentCategoryDescriptorId",
- "postgreSql": "AssessmentCategoryDescriptorId"
+ "sqlServer": "AdministrationIdentifier",
+ "postgreSql": "AdministrationIdentifier"
}
- }
- ],
- "isIdentifying": true,
- "isRequired": true,
- "constraintNames": {
- "sqlServer": "FK_AssessmentCategoryDescriptor_Descriptor",
- "postgreSql": "FK_20e875_Descriptor"
- },
- "potentiallyLogical": false
- },
- {
- "fullName": {
- "schema": "edfi",
- "name": "FK_AssessmentContentStandard_Assessment"
- },
- "cardinality": "OneToZeroOrOne",
- "primaryEntityFullName": {
- "schema": "edfi",
- "name": "Assessment"
- },
- "primaryEntityProperties": [
+ },
{
"propertyName": "AssessmentIdentifier",
"propertyType": {
@@ -50686,6 +52018,23 @@
"postgreSql": "AssessmentIdentifier"
}
},
+ {
+ "propertyName": "AssigningEducationOrganizationId",
+ "propertyType": {
+ "dbType": "Int64",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The identifier assigned to an education organization.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AssigningEducationOrganizationId",
+ "postgreSql": "AssigningEducationOrganizationId"
+ }
+ },
{
"propertyName": "Namespace",
"propertyType": {
@@ -50707,7 +52056,1026 @@
],
"secondaryEntityFullName": {
"schema": "edfi",
- "name": "AssessmentContentStandard"
+ "name": "AssessmentAdministrationAssessmentAdminstrationPeriod"
+ },
+ "secondaryEntityProperties": [
+ {
+ "propertyName": "AdministrationIdentifier",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 255,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The title or name of the assessment in the context of its administration.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AdministrationIdentifier",
+ "postgreSql": "AdministrationIdentifier"
+ }
+ },
+ {
+ "propertyName": "AssessmentIdentifier",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 60,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "A unique number or alphanumeric code assigned to an assessment.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AssessmentIdentifier",
+ "postgreSql": "AssessmentIdentifier"
+ }
+ },
+ {
+ "propertyName": "AssigningEducationOrganizationId",
+ "propertyType": {
+ "dbType": "Int64",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The identifier assigned to an education organization.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AssigningEducationOrganizationId",
+ "postgreSql": "AssigningEducationOrganizationId"
+ }
+ },
+ {
+ "propertyName": "Namespace",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 5,
+ "maxLength": 255,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "Namespace for the assessment.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "Namespace",
+ "postgreSql": "Namespace"
+ }
+ }
+ ],
+ "isIdentifying": true,
+ "isRequired": true,
+ "constraintNames": {
+ "sqlServer": "FK_AssessmentAdministrationAssessmentAdminstrationPeriod_AssessmentAdministration",
+ "postgreSql": "FK_77cf17_AssessmentAdministration"
+ },
+ "potentiallyLogical": false
+ },
+ {
+ "fullName": {
+ "schema": "edfi",
+ "name": "FK_AssessmentAdministrationAssessmentBatteryPart_AssessmentAdministration"
+ },
+ "cardinality": "OneToZeroOrMore",
+ "primaryEntityFullName": {
+ "schema": "edfi",
+ "name": "AssessmentAdministration"
+ },
+ "primaryEntityProperties": [
+ {
+ "propertyName": "AdministrationIdentifier",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 255,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The title or name of the assessment in the context of its administration.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AdministrationIdentifier",
+ "postgreSql": "AdministrationIdentifier"
+ }
+ },
+ {
+ "propertyName": "AssessmentIdentifier",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 60,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "A unique number or alphanumeric code assigned to an assessment.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AssessmentIdentifier",
+ "postgreSql": "AssessmentIdentifier"
+ }
+ },
+ {
+ "propertyName": "AssigningEducationOrganizationId",
+ "propertyType": {
+ "dbType": "Int64",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The identifier assigned to an education organization.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AssigningEducationOrganizationId",
+ "postgreSql": "AssigningEducationOrganizationId"
+ }
+ },
+ {
+ "propertyName": "Namespace",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 5,
+ "maxLength": 255,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "Namespace for the assessment.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "Namespace",
+ "postgreSql": "Namespace"
+ }
+ }
+ ],
+ "secondaryEntityFullName": {
+ "schema": "edfi",
+ "name": "AssessmentAdministrationAssessmentBatteryPart"
+ },
+ "secondaryEntityProperties": [
+ {
+ "propertyName": "AdministrationIdentifier",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 255,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The title or name of the assessment in the context of its administration.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AdministrationIdentifier",
+ "postgreSql": "AdministrationIdentifier"
+ }
+ },
+ {
+ "propertyName": "AssessmentIdentifier",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 60,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "A unique number or alphanumeric code assigned to an assessment.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AssessmentIdentifier",
+ "postgreSql": "AssessmentIdentifier"
+ }
+ },
+ {
+ "propertyName": "AssigningEducationOrganizationId",
+ "propertyType": {
+ "dbType": "Int64",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The identifier assigned to an education organization.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AssigningEducationOrganizationId",
+ "postgreSql": "AssigningEducationOrganizationId"
+ }
+ },
+ {
+ "propertyName": "Namespace",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 5,
+ "maxLength": 255,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "Namespace for the assessment.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "Namespace",
+ "postgreSql": "Namespace"
+ }
+ }
+ ],
+ "isIdentifying": true,
+ "isRequired": true,
+ "constraintNames": {
+ "sqlServer": "FK_AssessmentAdministrationAssessmentBatteryPart_AssessmentAdministration",
+ "postgreSql": "FK_1d6852_AssessmentAdministration"
+ },
+ "potentiallyLogical": false
+ },
+ {
+ "fullName": {
+ "schema": "edfi",
+ "name": "FK_AssessmentAdministrationAssessmentBatteryPart_AssessmentBatteryPart"
+ },
+ "cardinality": "OneToZeroOrMore",
+ "primaryEntityFullName": {
+ "schema": "edfi",
+ "name": "AssessmentBatteryPart"
+ },
+ "primaryEntityProperties": [
+ {
+ "propertyName": "AssessmentBatteryPartName",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 65,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The name of the part of an assessment battery.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AssessmentBatteryPartName",
+ "postgreSql": "AssessmentBatteryPartName"
+ }
+ },
+ {
+ "propertyName": "AssessmentIdentifier",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 60,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "A unique number or alphanumeric code assigned to an assessment.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AssessmentIdentifier",
+ "postgreSql": "AssessmentIdentifier"
+ }
+ },
+ {
+ "propertyName": "Namespace",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 5,
+ "maxLength": 255,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "Namespace for the assessment.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "Namespace",
+ "postgreSql": "Namespace"
+ }
+ }
+ ],
+ "secondaryEntityFullName": {
+ "schema": "edfi",
+ "name": "AssessmentAdministrationAssessmentBatteryPart"
+ },
+ "secondaryEntityProperties": [
+ {
+ "propertyName": "AssessmentBatteryPartName",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 65,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The name of the part of an assessment battery.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AssessmentBatteryPartName",
+ "postgreSql": "AssessmentBatteryPartName"
+ }
+ },
+ {
+ "propertyName": "AssessmentIdentifier",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 60,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "A unique number or alphanumeric code assigned to an assessment.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AssessmentIdentifier",
+ "postgreSql": "AssessmentIdentifier"
+ }
+ },
+ {
+ "propertyName": "Namespace",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 5,
+ "maxLength": 255,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "Namespace for the assessment.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "Namespace",
+ "postgreSql": "Namespace"
+ }
+ }
+ ],
+ "isIdentifying": true,
+ "isRequired": true,
+ "constraintNames": {
+ "sqlServer": "FK_AssessmentAdministrationAssessmentBatteryPart_AssessmentBatteryPart",
+ "postgreSql": "FK_1d6852_AssessmentBatteryPart"
+ },
+ "potentiallyLogical": false
+ },
+ {
+ "fullName": {
+ "schema": "edfi",
+ "name": "FK_AssessmentAssessedGradeLevel_Assessment"
+ },
+ "cardinality": "OneToZeroOrMore",
+ "primaryEntityFullName": {
+ "schema": "edfi",
+ "name": "Assessment"
+ },
+ "primaryEntityProperties": [
+ {
+ "propertyName": "AssessmentIdentifier",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 60,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "A unique number or alphanumeric code assigned to an assessment.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AssessmentIdentifier",
+ "postgreSql": "AssessmentIdentifier"
+ }
+ },
+ {
+ "propertyName": "Namespace",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 5,
+ "maxLength": 255,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "Namespace for the assessment.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "Namespace",
+ "postgreSql": "Namespace"
+ }
+ }
+ ],
+ "secondaryEntityFullName": {
+ "schema": "edfi",
+ "name": "AssessmentAssessedGradeLevel"
+ },
+ "secondaryEntityProperties": [
+ {
+ "propertyName": "AssessmentIdentifier",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 60,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "A unique number or alphanumeric code assigned to an assessment.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AssessmentIdentifier",
+ "postgreSql": "AssessmentIdentifier"
+ }
+ },
+ {
+ "propertyName": "Namespace",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 5,
+ "maxLength": 255,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "Namespace for the assessment.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "Namespace",
+ "postgreSql": "Namespace"
+ }
+ }
+ ],
+ "isIdentifying": true,
+ "isRequired": true,
+ "constraintNames": {
+ "sqlServer": "FK_AssessmentAssessedGradeLevel_Assessment",
+ "postgreSql": "FK_e83625_Assessment"
+ },
+ "potentiallyLogical": false
+ },
+ {
+ "fullName": {
+ "schema": "edfi",
+ "name": "FK_AssessmentAssessedGradeLevel_GradeLevelDescriptor"
+ },
+ "cardinality": "OneToZeroOrMore",
+ "primaryEntityFullName": {
+ "schema": "edfi",
+ "name": "GradeLevelDescriptor"
+ },
+ "primaryEntityProperties": [
+ {
+ "propertyName": "GradeLevelDescriptorId",
+ "propertyType": {
+ "dbType": "Int32",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "A unique identifier used as Primary Key, not derived from business logic, when acting as Foreign Key, references the parent table.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "GradeLevelDescriptorId",
+ "postgreSql": "GradeLevelDescriptorId"
+ }
+ }
+ ],
+ "secondaryEntityFullName": {
+ "schema": "edfi",
+ "name": "AssessmentAssessedGradeLevel"
+ },
+ "secondaryEntityProperties": [
+ {
+ "propertyName": "GradeLevelDescriptorId",
+ "propertyType": {
+ "dbType": "Int32",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The grade level(s) for which an assessment is designed. The semantics of null is assumed to mean that the assessment is not associated with any grade level.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "GradeLevelDescriptorId",
+ "postgreSql": "GradeLevelDescriptorId"
+ }
+ }
+ ],
+ "isIdentifying": true,
+ "isRequired": true,
+ "constraintNames": {
+ "sqlServer": "FK_AssessmentAssessedGradeLevel_GradeLevelDescriptor",
+ "postgreSql": "FK_e83625_GradeLevelDescriptor"
+ },
+ "potentiallyLogical": false
+ },
+ {
+ "fullName": {
+ "schema": "edfi",
+ "name": "FK_AssessmentBatteryPart_Assessment"
+ },
+ "cardinality": "OneToZeroOrMore",
+ "primaryEntityFullName": {
+ "schema": "edfi",
+ "name": "Assessment"
+ },
+ "primaryEntityProperties": [
+ {
+ "propertyName": "AssessmentIdentifier",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 60,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "A unique number or alphanumeric code assigned to an assessment.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AssessmentIdentifier",
+ "postgreSql": "AssessmentIdentifier"
+ }
+ },
+ {
+ "propertyName": "Namespace",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 5,
+ "maxLength": 255,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "Namespace for the assessment.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "Namespace",
+ "postgreSql": "Namespace"
+ }
+ }
+ ],
+ "secondaryEntityFullName": {
+ "schema": "edfi",
+ "name": "AssessmentBatteryPart"
+ },
+ "secondaryEntityProperties": [
+ {
+ "propertyName": "AssessmentIdentifier",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 60,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "A unique number or alphanumeric code assigned to an assessment.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AssessmentIdentifier",
+ "postgreSql": "AssessmentIdentifier"
+ }
+ },
+ {
+ "propertyName": "Namespace",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 5,
+ "maxLength": 255,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "Namespace for the assessment.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "Namespace",
+ "postgreSql": "Namespace"
+ }
+ }
+ ],
+ "isIdentifying": true,
+ "isRequired": true,
+ "constraintNames": {
+ "sqlServer": "FK_AssessmentBatteryPart_Assessment",
+ "postgreSql": "FK_6e22f2_Assessment"
+ },
+ "potentiallyLogical": false
+ },
+ {
+ "fullName": {
+ "schema": "edfi",
+ "name": "FK_AssessmentBatteryPartObjectiveAssessment_AssessmentBatteryPart"
+ },
+ "cardinality": "OneToZeroOrMore",
+ "primaryEntityFullName": {
+ "schema": "edfi",
+ "name": "AssessmentBatteryPart"
+ },
+ "primaryEntityProperties": [
+ {
+ "propertyName": "AssessmentBatteryPartName",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 65,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The name of the part of an assessment battery.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AssessmentBatteryPartName",
+ "postgreSql": "AssessmentBatteryPartName"
+ }
+ },
+ {
+ "propertyName": "AssessmentIdentifier",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 60,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "A unique number or alphanumeric code assigned to an assessment.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AssessmentIdentifier",
+ "postgreSql": "AssessmentIdentifier"
+ }
+ },
+ {
+ "propertyName": "Namespace",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 5,
+ "maxLength": 255,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "Namespace for the assessment.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "Namespace",
+ "postgreSql": "Namespace"
+ }
+ }
+ ],
+ "secondaryEntityFullName": {
+ "schema": "edfi",
+ "name": "AssessmentBatteryPartObjectiveAssessment"
+ },
+ "secondaryEntityProperties": [
+ {
+ "propertyName": "AssessmentBatteryPartName",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 65,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The name of the part of an assessment battery.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AssessmentBatteryPartName",
+ "postgreSql": "AssessmentBatteryPartName"
+ }
+ },
+ {
+ "propertyName": "AssessmentIdentifier",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 60,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "A unique number or alphanumeric code assigned to an assessment.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AssessmentIdentifier",
+ "postgreSql": "AssessmentIdentifier"
+ }
+ },
+ {
+ "propertyName": "Namespace",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 5,
+ "maxLength": 255,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "Namespace for the assessment.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "Namespace",
+ "postgreSql": "Namespace"
+ }
+ }
+ ],
+ "isIdentifying": true,
+ "isRequired": true,
+ "constraintNames": {
+ "sqlServer": "FK_AssessmentBatteryPartObjectiveAssessment_AssessmentBatteryPart",
+ "postgreSql": "FK_8ab121_AssessmentBatteryPart"
+ },
+ "potentiallyLogical": false
+ },
+ {
+ "fullName": {
+ "schema": "edfi",
+ "name": "FK_AssessmentBatteryPartObjectiveAssessment_ObjectiveAssessment"
+ },
+ "cardinality": "OneToZeroOrMore",
+ "primaryEntityFullName": {
+ "schema": "edfi",
+ "name": "ObjectiveAssessment"
+ },
+ "primaryEntityProperties": [
+ {
+ "propertyName": "AssessmentIdentifier",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 60,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "A unique number or alphanumeric code assigned to an assessment.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AssessmentIdentifier",
+ "postgreSql": "AssessmentIdentifier"
+ }
+ },
+ {
+ "propertyName": "IdentificationCode",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 60,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "A unique number or alphanumeric code assigned to an objective assessment by a school, school system, a state, or other agency or entity.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "IdentificationCode",
+ "postgreSql": "IdentificationCode"
+ }
+ },
+ {
+ "propertyName": "Namespace",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 5,
+ "maxLength": 255,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "Namespace for the assessment.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "Namespace",
+ "postgreSql": "Namespace"
+ }
+ }
+ ],
+ "secondaryEntityFullName": {
+ "schema": "edfi",
+ "name": "AssessmentBatteryPartObjectiveAssessment"
+ },
+ "secondaryEntityProperties": [
+ {
+ "propertyName": "AssessmentIdentifier",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 60,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "A unique number or alphanumeric code assigned to an assessment.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AssessmentIdentifier",
+ "postgreSql": "AssessmentIdentifier"
+ }
+ },
+ {
+ "propertyName": "IdentificationCode",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 60,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "A unique number or alphanumeric code assigned to an objective assessment by a school, school system, a state, or other agency or entity.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "IdentificationCode",
+ "postgreSql": "IdentificationCode"
+ }
+ },
+ {
+ "propertyName": "Namespace",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 5,
+ "maxLength": 255,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "Namespace for the assessment.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "Namespace",
+ "postgreSql": "Namespace"
+ }
+ }
+ ],
+ "isIdentifying": true,
+ "isRequired": true,
+ "constraintNames": {
+ "sqlServer": "FK_AssessmentBatteryPartObjectiveAssessment_ObjectiveAssessment",
+ "postgreSql": "FK_8ab121_ObjectiveAssessment"
+ },
+ "potentiallyLogical": false
+ },
+ {
+ "fullName": {
+ "schema": "edfi",
+ "name": "FK_AssessmentCategoryDescriptor_Descriptor"
+ },
+ "cardinality": "OneToOneInheritance",
+ "primaryEntityFullName": {
+ "schema": "edfi",
+ "name": "Descriptor"
+ },
+ "primaryEntityProperties": [
+ {
+ "propertyName": "DescriptorId",
+ "propertyType": {
+ "dbType": "Int32",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "A unique identifier used as Primary Key, not derived from business logic, when acting as Foreign Key, references the parent table.",
+ "isIdentifying": true,
+ "isServerAssigned": true,
+ "columnNames": {
+ "sqlServer": "DescriptorId",
+ "postgreSql": "DescriptorId"
+ }
+ }
+ ],
+ "secondaryEntityFullName": {
+ "schema": "edfi",
+ "name": "AssessmentCategoryDescriptor"
+ },
+ "secondaryEntityProperties": [
+ {
+ "propertyName": "AssessmentCategoryDescriptorId",
+ "propertyType": {
+ "dbType": "Int32",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "A unique identifier used as Primary Key, not derived from business logic, when acting as Foreign Key, references the parent table.",
+ "isIdentifying": true,
+ "isServerAssigned": true,
+ "columnNames": {
+ "sqlServer": "AssessmentCategoryDescriptorId",
+ "postgreSql": "AssessmentCategoryDescriptorId"
+ }
+ }
+ ],
+ "isIdentifying": true,
+ "isRequired": true,
+ "constraintNames": {
+ "sqlServer": "FK_AssessmentCategoryDescriptor_Descriptor",
+ "postgreSql": "FK_20e875_Descriptor"
+ },
+ "potentiallyLogical": false
+ },
+ {
+ "fullName": {
+ "schema": "edfi",
+ "name": "FK_AssessmentContentStandard_Assessment"
+ },
+ "cardinality": "OneToZeroOrOne",
+ "primaryEntityFullName": {
+ "schema": "edfi",
+ "name": "Assessment"
+ },
+ "primaryEntityProperties": [
+ {
+ "propertyName": "AssessmentIdentifier",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 60,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "A unique number or alphanumeric code assigned to an assessment.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AssessmentIdentifier",
+ "postgreSql": "AssessmentIdentifier"
+ }
+ },
+ {
+ "propertyName": "Namespace",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 5,
+ "maxLength": 255,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "Namespace for the assessment.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "Namespace",
+ "postgreSql": "Namespace"
+ }
+ }
+ ],
+ "secondaryEntityFullName": {
+ "schema": "edfi",
+ "name": "AssessmentContentStandard"
},
"secondaryEntityProperties": [
{
@@ -53905,6 +56273,496 @@
},
"potentiallyLogical": false
},
+ {
+ "fullName": {
+ "schema": "edfi",
+ "name": "FK_AssesssmentAdministrationParticipation_AssessmentAdministration"
+ },
+ "cardinality": "OneToZeroOrMore",
+ "primaryEntityFullName": {
+ "schema": "edfi",
+ "name": "AssessmentAdministration"
+ },
+ "primaryEntityProperties": [
+ {
+ "propertyName": "AdministrationIdentifier",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 255,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The title or name of the assessment in the context of its administration.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AdministrationIdentifier",
+ "postgreSql": "AdministrationIdentifier"
+ }
+ },
+ {
+ "propertyName": "AssessmentIdentifier",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 60,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "A unique number or alphanumeric code assigned to an assessment.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AssessmentIdentifier",
+ "postgreSql": "AssessmentIdentifier"
+ }
+ },
+ {
+ "propertyName": "AssigningEducationOrganizationId",
+ "propertyType": {
+ "dbType": "Int64",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The identifier assigned to an education organization.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AssigningEducationOrganizationId",
+ "postgreSql": "AssigningEducationOrganizationId"
+ }
+ },
+ {
+ "propertyName": "Namespace",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 5,
+ "maxLength": 255,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "Namespace for the assessment.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "Namespace",
+ "postgreSql": "Namespace"
+ }
+ }
+ ],
+ "secondaryEntityFullName": {
+ "schema": "edfi",
+ "name": "AssesssmentAdministrationParticipation"
+ },
+ "secondaryEntityProperties": [
+ {
+ "propertyName": "AdministrationIdentifier",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 255,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The title or name of the assessment in the context of its administration.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AdministrationIdentifier",
+ "postgreSql": "AdministrationIdentifier"
+ }
+ },
+ {
+ "propertyName": "AssessmentIdentifier",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 60,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "A unique number or alphanumeric code assigned to an assessment.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AssessmentIdentifier",
+ "postgreSql": "AssessmentIdentifier"
+ }
+ },
+ {
+ "propertyName": "AssigningEducationOrganizationId",
+ "propertyType": {
+ "dbType": "Int64",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The identifier assigned to an education organization.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AssigningEducationOrganizationId",
+ "postgreSql": "AssigningEducationOrganizationId"
+ }
+ },
+ {
+ "propertyName": "Namespace",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 5,
+ "maxLength": 255,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "Namespace for the assessment.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "Namespace",
+ "postgreSql": "Namespace"
+ }
+ }
+ ],
+ "isIdentifying": true,
+ "isRequired": true,
+ "constraintNames": {
+ "sqlServer": "FK_AssesssmentAdministrationParticipation_AssessmentAdministration",
+ "postgreSql": "FK_0b52ab_AssessmentAdministration"
+ },
+ "potentiallyLogical": false
+ },
+ {
+ "fullName": {
+ "schema": "edfi",
+ "name": "FK_AssesssmentAdministrationParticipation_EducationOrganization"
+ },
+ "cardinality": "OneToZeroOrMore",
+ "primaryEntityFullName": {
+ "schema": "edfi",
+ "name": "EducationOrganization"
+ },
+ "primaryEntityProperties": [
+ {
+ "propertyName": "EducationOrganizationId",
+ "propertyType": {
+ "dbType": "Int64",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The identifier assigned to an education organization.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "EducationOrganizationId",
+ "postgreSql": "EducationOrganizationId"
+ }
+ }
+ ],
+ "secondaryEntityFullName": {
+ "schema": "edfi",
+ "name": "AssesssmentAdministrationParticipation"
+ },
+ "secondaryEntityProperties": [
+ {
+ "propertyName": "ParticipatingEducationOrganizationId",
+ "propertyType": {
+ "dbType": "Int64",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The identifier assigned to an education organization.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "ParticipatingEducationOrganizationId",
+ "postgreSql": "ParticipatingEducationOrganizationId"
+ }
+ }
+ ],
+ "isIdentifying": true,
+ "isRequired": true,
+ "constraintNames": {
+ "sqlServer": "FK_AssesssmentAdministrationParticipation_EducationOrganization",
+ "postgreSql": "FK_0b52ab_EducationOrganization"
+ },
+ "potentiallyLogical": false
+ },
+ {
+ "fullName": {
+ "schema": "edfi",
+ "name": "FK_AssesssmentAdministrationParticipationAdministrationPointOfContact_AssesssmentAdministrationParticipation"
+ },
+ "cardinality": "OneToZeroOrMore",
+ "primaryEntityFullName": {
+ "schema": "edfi",
+ "name": "AssesssmentAdministrationParticipation"
+ },
+ "primaryEntityProperties": [
+ {
+ "propertyName": "AdministrationIdentifier",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 255,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The title or name of the assessment in the context of its administration.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AdministrationIdentifier",
+ "postgreSql": "AdministrationIdentifier"
+ }
+ },
+ {
+ "propertyName": "AssessmentIdentifier",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 60,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "A unique number or alphanumeric code assigned to an assessment.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AssessmentIdentifier",
+ "postgreSql": "AssessmentIdentifier"
+ }
+ },
+ {
+ "propertyName": "AssigningEducationOrganizationId",
+ "propertyType": {
+ "dbType": "Int64",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The identifier assigned to an education organization.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AssigningEducationOrganizationId",
+ "postgreSql": "AssigningEducationOrganizationId"
+ }
+ },
+ {
+ "propertyName": "Namespace",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 5,
+ "maxLength": 255,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "Namespace for the assessment.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "Namespace",
+ "postgreSql": "Namespace"
+ }
+ },
+ {
+ "propertyName": "ParticipatingEducationOrganizationId",
+ "propertyType": {
+ "dbType": "Int64",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The identifier assigned to an education organization.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "ParticipatingEducationOrganizationId",
+ "postgreSql": "ParticipatingEducationOrganizationId"
+ }
+ }
+ ],
+ "secondaryEntityFullName": {
+ "schema": "edfi",
+ "name": "AssesssmentAdministrationParticipationAdministrationPointOfContact"
+ },
+ "secondaryEntityProperties": [
+ {
+ "propertyName": "AdministrationIdentifier",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 255,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The title or name of the assessment in the context of its administration.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AdministrationIdentifier",
+ "postgreSql": "AdministrationIdentifier"
+ }
+ },
+ {
+ "propertyName": "AssessmentIdentifier",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 60,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "A unique number or alphanumeric code assigned to an assessment.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AssessmentIdentifier",
+ "postgreSql": "AssessmentIdentifier"
+ }
+ },
+ {
+ "propertyName": "AssigningEducationOrganizationId",
+ "propertyType": {
+ "dbType": "Int64",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The identifier assigned to an education organization.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AssigningEducationOrganizationId",
+ "postgreSql": "AssigningEducationOrganizationId"
+ }
+ },
+ {
+ "propertyName": "Namespace",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 5,
+ "maxLength": 255,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "Namespace for the assessment.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "Namespace",
+ "postgreSql": "Namespace"
+ }
+ },
+ {
+ "propertyName": "ParticipatingEducationOrganizationId",
+ "propertyType": {
+ "dbType": "Int64",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The identifier assigned to an education organization.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "ParticipatingEducationOrganizationId",
+ "postgreSql": "ParticipatingEducationOrganizationId"
+ }
+ }
+ ],
+ "isIdentifying": true,
+ "isRequired": true,
+ "constraintNames": {
+ "sqlServer": "FK_AssesssmentAdministrationParticipationAdministrationPointOfContact_AssesssmentAdministrationParticipation",
+ "postgreSql": "FK_c21adc_AssesssmentAdministrationParticipation"
+ },
+ "potentiallyLogical": false
+ },
+ {
+ "fullName": {
+ "schema": "edfi",
+ "name": "FK_AssesssmentAdministrationParticipationAdministrationPointOfContact_EducationOrganization"
+ },
+ "cardinality": "OneToZeroOrMore",
+ "primaryEntityFullName": {
+ "schema": "edfi",
+ "name": "EducationOrganization"
+ },
+ "primaryEntityProperties": [
+ {
+ "propertyName": "EducationOrganizationId",
+ "propertyType": {
+ "dbType": "Int64",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The identifier assigned to an education organization.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "EducationOrganizationId",
+ "postgreSql": "EducationOrganizationId"
+ }
+ }
+ ],
+ "secondaryEntityFullName": {
+ "schema": "edfi",
+ "name": "AssesssmentAdministrationParticipationAdministrationPointOfContact"
+ },
+ "secondaryEntityProperties": [
+ {
+ "propertyName": "EducationOrganizationId",
+ "propertyType": {
+ "dbType": "Int64",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The identifier assigned to an education organization.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "EducationOrganizationId",
+ "postgreSql": "EducationOrganizationId"
+ }
+ }
+ ],
+ "isIdentifying": true,
+ "isRequired": true,
+ "constraintNames": {
+ "sqlServer": "FK_AssesssmentAdministrationParticipationAdministrationPointOfContact_EducationOrganization",
+ "postgreSql": "FK_c21adc_EducationOrganization"
+ },
+ "potentiallyLogical": false
+ },
{
"fullName": {
"schema": "edfi",
@@ -101923,6 +104781,66 @@
},
"potentiallyLogical": false
},
+ {
+ "fullName": {
+ "schema": "edfi",
+ "name": "FK_Section504DisabilityTypeDescriptor_Descriptor"
+ },
+ "cardinality": "OneToOneInheritance",
+ "primaryEntityFullName": {
+ "schema": "edfi",
+ "name": "Descriptor"
+ },
+ "primaryEntityProperties": [
+ {
+ "propertyName": "DescriptorId",
+ "propertyType": {
+ "dbType": "Int32",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "A unique identifier used as Primary Key, not derived from business logic, when acting as Foreign Key, references the parent table.",
+ "isIdentifying": true,
+ "isServerAssigned": true,
+ "columnNames": {
+ "sqlServer": "DescriptorId",
+ "postgreSql": "DescriptorId"
+ }
+ }
+ ],
+ "secondaryEntityFullName": {
+ "schema": "edfi",
+ "name": "Section504DisabilityTypeDescriptor"
+ },
+ "secondaryEntityProperties": [
+ {
+ "propertyName": "Section504DisabilityTypeDescriptorId",
+ "propertyType": {
+ "dbType": "Int32",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "A unique identifier used as Primary Key, not derived from business logic, when acting as Foreign Key, references the parent table.",
+ "isIdentifying": true,
+ "isServerAssigned": true,
+ "columnNames": {
+ "sqlServer": "Section504DisabilityTypeDescriptorId",
+ "postgreSql": "Section504DisabilityTypeDescriptorId"
+ }
+ }
+ ],
+ "isIdentifying": true,
+ "isRequired": true,
+ "constraintNames": {
+ "sqlServer": "FK_Section504DisabilityTypeDescriptor_Descriptor",
+ "postgreSql": "FK_e7f766_Descriptor"
+ },
+ "potentiallyLogical": false
+ },
{
"fullName": {
"schema": "edfi",
@@ -117724,8 +120642,1968 @@
"isIdentifying": true,
"isRequired": true,
"constraintNames": {
- "sqlServer": "FK_StudentAssessmentPeriod_StudentAssessment",
- "postgreSql": "FK_02ddd8_StudentAssessment"
+ "sqlServer": "FK_StudentAssessmentPeriod_StudentAssessment",
+ "postgreSql": "FK_02ddd8_StudentAssessment"
+ },
+ "potentiallyLogical": false
+ },
+ {
+ "fullName": {
+ "schema": "edfi",
+ "name": "FK_StudentAssessmentRegistration_AssessmentAdministration"
+ },
+ "cardinality": "OneToZeroOrMore",
+ "primaryEntityFullName": {
+ "schema": "edfi",
+ "name": "AssessmentAdministration"
+ },
+ "primaryEntityProperties": [
+ {
+ "propertyName": "AdministrationIdentifier",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 255,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The title or name of the assessment in the context of its administration.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AdministrationIdentifier",
+ "postgreSql": "AdministrationIdentifier"
+ }
+ },
+ {
+ "propertyName": "AssessmentIdentifier",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 60,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "A unique number or alphanumeric code assigned to an assessment.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AssessmentIdentifier",
+ "postgreSql": "AssessmentIdentifier"
+ }
+ },
+ {
+ "propertyName": "AssigningEducationOrganizationId",
+ "propertyType": {
+ "dbType": "Int64",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The identifier assigned to an education organization.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AssigningEducationOrganizationId",
+ "postgreSql": "AssigningEducationOrganizationId"
+ }
+ },
+ {
+ "propertyName": "Namespace",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 5,
+ "maxLength": 255,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "Namespace for the assessment.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "Namespace",
+ "postgreSql": "Namespace"
+ }
+ }
+ ],
+ "secondaryEntityFullName": {
+ "schema": "edfi",
+ "name": "StudentAssessmentRegistration"
+ },
+ "secondaryEntityProperties": [
+ {
+ "propertyName": "AdministrationIdentifier",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 255,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The title or name of the assessment in the context of its administration.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AdministrationIdentifier",
+ "postgreSql": "AdministrationIdentifier"
+ }
+ },
+ {
+ "propertyName": "AssessmentIdentifier",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 60,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "A unique number or alphanumeric code assigned to an assessment.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AssessmentIdentifier",
+ "postgreSql": "AssessmentIdentifier"
+ }
+ },
+ {
+ "propertyName": "AssigningEducationOrganizationId",
+ "propertyType": {
+ "dbType": "Int64",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The identifier assigned to an education organization.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AssigningEducationOrganizationId",
+ "postgreSql": "AssigningEducationOrganizationId"
+ }
+ },
+ {
+ "propertyName": "Namespace",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 5,
+ "maxLength": 255,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "Namespace for the assessment.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "Namespace",
+ "postgreSql": "Namespace"
+ }
+ }
+ ],
+ "isIdentifying": true,
+ "isRequired": true,
+ "constraintNames": {
+ "sqlServer": "FK_StudentAssessmentRegistration_AssessmentAdministration",
+ "postgreSql": "FK_79fd6b_AssessmentAdministration"
+ },
+ "potentiallyLogical": false
+ },
+ {
+ "fullName": {
+ "schema": "edfi",
+ "name": "FK_StudentAssessmentRegistration_EducationOrganization"
+ },
+ "cardinality": "OneToZeroOrMore",
+ "primaryEntityFullName": {
+ "schema": "edfi",
+ "name": "EducationOrganization"
+ },
+ "primaryEntityProperties": [
+ {
+ "propertyName": "EducationOrganizationId",
+ "propertyType": {
+ "dbType": "Int64",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The identifier assigned to an education organization.",
+ "isIdentifying": false,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "EducationOrganizationId",
+ "postgreSql": "EducationOrganizationId"
+ }
+ }
+ ],
+ "secondaryEntityFullName": {
+ "schema": "edfi",
+ "name": "StudentAssessmentRegistration"
+ },
+ "secondaryEntityProperties": [
+ {
+ "propertyName": "ReportingEducationOrganizationId",
+ "propertyType": {
+ "dbType": "Int64",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": true
+ },
+ "description": "The identifier assigned to an education organization.",
+ "isIdentifying": false,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "ReportingEducationOrganizationId",
+ "postgreSql": "ReportingEducationOrganizationId"
+ }
+ }
+ ],
+ "isIdentifying": false,
+ "isRequired": false,
+ "constraintNames": {
+ "sqlServer": "FK_StudentAssessmentRegistration_EducationOrganization",
+ "postgreSql": "FK_79fd6b_EducationOrganization"
+ },
+ "potentiallyLogical": false
+ },
+ {
+ "fullName": {
+ "schema": "edfi",
+ "name": "FK_StudentAssessmentRegistration_EducationOrganization1"
+ },
+ "cardinality": "OneToZeroOrMore",
+ "primaryEntityFullName": {
+ "schema": "edfi",
+ "name": "EducationOrganization"
+ },
+ "primaryEntityProperties": [
+ {
+ "propertyName": "EducationOrganizationId",
+ "propertyType": {
+ "dbType": "Int64",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The identifier assigned to an education organization.",
+ "isIdentifying": false,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "EducationOrganizationId",
+ "postgreSql": "EducationOrganizationId"
+ }
+ }
+ ],
+ "secondaryEntityFullName": {
+ "schema": "edfi",
+ "name": "StudentAssessmentRegistration"
+ },
+ "secondaryEntityProperties": [
+ {
+ "propertyName": "TestingEducationOrganizationId",
+ "propertyType": {
+ "dbType": "Int64",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": true
+ },
+ "description": "The identifier assigned to an education organization.",
+ "isIdentifying": false,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "TestingEducationOrganizationId",
+ "postgreSql": "TestingEducationOrganizationId"
+ }
+ }
+ ],
+ "isIdentifying": false,
+ "isRequired": false,
+ "constraintNames": {
+ "sqlServer": "FK_StudentAssessmentRegistration_EducationOrganization1",
+ "postgreSql": "FK_79fd6b_EducationOrganization1"
+ },
+ "potentiallyLogical": false
+ },
+ {
+ "fullName": {
+ "schema": "edfi",
+ "name": "FK_StudentAssessmentRegistration_GradeLevelDescriptor"
+ },
+ "cardinality": "OneToZeroOrMore",
+ "primaryEntityFullName": {
+ "schema": "edfi",
+ "name": "GradeLevelDescriptor"
+ },
+ "primaryEntityProperties": [
+ {
+ "propertyName": "GradeLevelDescriptorId",
+ "propertyType": {
+ "dbType": "Int32",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "A unique identifier used as Primary Key, not derived from business logic, when acting as Foreign Key, references the parent table.",
+ "isIdentifying": false,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "GradeLevelDescriptorId",
+ "postgreSql": "GradeLevelDescriptorId"
+ }
+ }
+ ],
+ "secondaryEntityFullName": {
+ "schema": "edfi",
+ "name": "StudentAssessmentRegistration"
+ },
+ "secondaryEntityProperties": [
+ {
+ "propertyName": "AssessmentGradeLevelDescriptorId",
+ "propertyType": {
+ "dbType": "Int32",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": true
+ },
+ "description": "The grade level or primary instructional level at which the student is to be assessed.",
+ "isIdentifying": false,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AssessmentGradeLevelDescriptorId",
+ "postgreSql": "AssessmentGradeLevelDescriptorId"
+ }
+ }
+ ],
+ "isIdentifying": false,
+ "isRequired": false,
+ "constraintNames": {
+ "sqlServer": "FK_StudentAssessmentRegistration_GradeLevelDescriptor",
+ "postgreSql": "FK_79fd6b_GradeLevelDescriptor"
+ },
+ "potentiallyLogical": false
+ },
+ {
+ "fullName": {
+ "schema": "edfi",
+ "name": "FK_StudentAssessmentRegistration_PlatformTypeDescriptor"
+ },
+ "cardinality": "OneToZeroOrMore",
+ "primaryEntityFullName": {
+ "schema": "edfi",
+ "name": "PlatformTypeDescriptor"
+ },
+ "primaryEntityProperties": [
+ {
+ "propertyName": "PlatformTypeDescriptorId",
+ "propertyType": {
+ "dbType": "Int32",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "A unique identifier used as Primary Key, not derived from business logic, when acting as Foreign Key, references the parent table.",
+ "isIdentifying": false,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "PlatformTypeDescriptorId",
+ "postgreSql": "PlatformTypeDescriptorId"
+ }
+ }
+ ],
+ "secondaryEntityFullName": {
+ "schema": "edfi",
+ "name": "StudentAssessmentRegistration"
+ },
+ "secondaryEntityProperties": [
+ {
+ "propertyName": "PlatformTypeDescriptorId",
+ "propertyType": {
+ "dbType": "Int32",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": true
+ },
+ "description": "The environment or format in which the assessment is expected to be administered.",
+ "isIdentifying": false,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "PlatformTypeDescriptorId",
+ "postgreSql": "PlatformTypeDescriptorId"
+ }
+ }
+ ],
+ "isIdentifying": false,
+ "isRequired": false,
+ "constraintNames": {
+ "sqlServer": "FK_StudentAssessmentRegistration_PlatformTypeDescriptor",
+ "postgreSql": "FK_79fd6b_PlatformTypeDescriptor"
+ },
+ "potentiallyLogical": false
+ },
+ {
+ "fullName": {
+ "schema": "edfi",
+ "name": "FK_StudentAssessmentRegistration_StudentEducationOrganizationAssessmentAccommodation"
+ },
+ "cardinality": "OneToZeroOrMore",
+ "primaryEntityFullName": {
+ "schema": "edfi",
+ "name": "StudentEducationOrganizationAssessmentAccommodation"
+ },
+ "primaryEntityProperties": [
+ {
+ "propertyName": "EducationOrganizationId",
+ "propertyType": {
+ "dbType": "Int64",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The identifier assigned to an education organization.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "EducationOrganizationId",
+ "postgreSql": "EducationOrganizationId"
+ }
+ },
+ {
+ "propertyName": "StudentUSI",
+ "propertyType": {
+ "dbType": "Int32",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "A unique alphanumeric code assigned to a student.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "StudentUSI",
+ "postgreSql": "StudentUSI"
+ }
+ }
+ ],
+ "secondaryEntityFullName": {
+ "schema": "edfi",
+ "name": "StudentAssessmentRegistration"
+ },
+ "secondaryEntityProperties": [
+ {
+ "propertyName": "EducationOrganizationId",
+ "propertyType": {
+ "dbType": "Int64",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The identifier assigned to an education organization.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "EducationOrganizationId",
+ "postgreSql": "EducationOrganizationId"
+ }
+ },
+ {
+ "propertyName": "StudentUSI",
+ "propertyType": {
+ "dbType": "Int32",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "A unique alphanumeric code assigned to a student.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "StudentUSI",
+ "postgreSql": "StudentUSI"
+ }
+ }
+ ],
+ "isIdentifying": true,
+ "isRequired": true,
+ "constraintNames": {
+ "sqlServer": "FK_StudentAssessmentRegistration_StudentEducationOrganizationAssessmentAccommodation",
+ "postgreSql": "FK_79fd6b_StudentEducationOrganizationAssessmentAccommodation"
+ },
+ "potentiallyLogical": false
+ },
+ {
+ "fullName": {
+ "schema": "edfi",
+ "name": "FK_StudentAssessmentRegistration_StudentEducationOrganizationAssociation"
+ },
+ "cardinality": "OneToZeroOrMore",
+ "primaryEntityFullName": {
+ "schema": "edfi",
+ "name": "StudentEducationOrganizationAssociation"
+ },
+ "primaryEntityProperties": [
+ {
+ "propertyName": "EducationOrganizationId",
+ "propertyType": {
+ "dbType": "Int64",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The identifier assigned to an education organization.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "EducationOrganizationId",
+ "postgreSql": "EducationOrganizationId"
+ }
+ },
+ {
+ "propertyName": "StudentUSI",
+ "propertyType": {
+ "dbType": "Int32",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "A unique alphanumeric code assigned to a student.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "StudentUSI",
+ "postgreSql": "StudentUSI"
+ }
+ }
+ ],
+ "secondaryEntityFullName": {
+ "schema": "edfi",
+ "name": "StudentAssessmentRegistration"
+ },
+ "secondaryEntityProperties": [
+ {
+ "propertyName": "EducationOrganizationId",
+ "propertyType": {
+ "dbType": "Int64",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The identifier assigned to an education organization.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "EducationOrganizationId",
+ "postgreSql": "EducationOrganizationId"
+ }
+ },
+ {
+ "propertyName": "StudentUSI",
+ "propertyType": {
+ "dbType": "Int32",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "A unique alphanumeric code assigned to a student.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "StudentUSI",
+ "postgreSql": "StudentUSI"
+ }
+ }
+ ],
+ "isIdentifying": true,
+ "isRequired": true,
+ "constraintNames": {
+ "sqlServer": "FK_StudentAssessmentRegistration_StudentEducationOrganizationAssociation",
+ "postgreSql": "FK_79fd6b_StudentEducationOrganizationAssociation"
+ },
+ "potentiallyLogical": false
+ },
+ {
+ "fullName": {
+ "schema": "edfi",
+ "name": "FK_StudentAssessmentRegistration_StudentSchoolAssociation"
+ },
+ "cardinality": "OneToZeroOrMore",
+ "primaryEntityFullName": {
+ "schema": "edfi",
+ "name": "StudentSchoolAssociation"
+ },
+ "primaryEntityProperties": [
+ {
+ "propertyName": "EntryDate",
+ "propertyType": {
+ "dbType": "Date",
+ "minLength": 0,
+ "maxLength": 0,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The month, day, and year on which an individual enters and begins to receive instructional services in a school for each school year. The EntryDate value should be the date the student enrolled, or when the student's enrollment materially changed, such as with a grade promotion. Note: Date interpretation may vary. Ed-Fi recommends inclusive dates, but states may define dates as inclusive or exclusive. For calculations, align with local guidelines.",
+ "isIdentifying": false,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "EntryDate",
+ "postgreSql": "EntryDate"
+ }
+ },
+ {
+ "propertyName": "SchoolId",
+ "propertyType": {
+ "dbType": "Int64",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The identifier assigned to a school. It must be distinct from any other identifier assigned to educational organizations, such as a LocalEducationAgencyId, to prevent duplication.",
+ "isIdentifying": false,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "SchoolId",
+ "postgreSql": "SchoolId"
+ }
+ },
+ {
+ "propertyName": "StudentUSI",
+ "propertyType": {
+ "dbType": "Int32",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "A unique alphanumeric code assigned to a student.",
+ "isIdentifying": false,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "StudentUSI",
+ "postgreSql": "StudentUSI"
+ }
+ }
+ ],
+ "secondaryEntityFullName": {
+ "schema": "edfi",
+ "name": "StudentAssessmentRegistration"
+ },
+ "secondaryEntityProperties": [
+ {
+ "propertyName": "EntryDate",
+ "propertyType": {
+ "dbType": "Date",
+ "minLength": 0,
+ "maxLength": 0,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The month, day, and year on which an individual enters and begins to receive instructional services in a school for each school year. The EntryDate value should be the date the student enrolled, or when the student's enrollment materially changed, such as with a grade promotion. Note: Date interpretation may vary. Ed-Fi recommends inclusive dates, but states may define dates as inclusive or exclusive. For calculations, align with local guidelines.",
+ "isIdentifying": false,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "EntryDate",
+ "postgreSql": "EntryDate"
+ }
+ },
+ {
+ "propertyName": "SchoolId",
+ "propertyType": {
+ "dbType": "Int64",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The identifier assigned to a school. It must be distinct from any other identifier assigned to educational organizations, such as a LocalEducationAgencyId, to prevent duplication.",
+ "isIdentifying": false,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "SchoolId",
+ "postgreSql": "SchoolId"
+ }
+ },
+ {
+ "propertyName": "StudentUSI",
+ "propertyType": {
+ "dbType": "Int32",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "A unique alphanumeric code assigned to a student.",
+ "isIdentifying": false,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "StudentUSI",
+ "postgreSql": "StudentUSI"
+ }
+ }
+ ],
+ "isIdentifying": false,
+ "isRequired": true,
+ "constraintNames": {
+ "sqlServer": "FK_StudentAssessmentRegistration_StudentSchoolAssociation",
+ "postgreSql": "FK_79fd6b_StudentSchoolAssociation"
+ },
+ "potentiallyLogical": false
+ },
+ {
+ "fullName": {
+ "schema": "edfi",
+ "name": "FK_StudentAssessmentRegistrationAssessmentAccommodation_AccommodationDescriptor"
+ },
+ "cardinality": "OneToZeroOrMore",
+ "primaryEntityFullName": {
+ "schema": "edfi",
+ "name": "AccommodationDescriptor"
+ },
+ "primaryEntityProperties": [
+ {
+ "propertyName": "AccommodationDescriptorId",
+ "propertyType": {
+ "dbType": "Int32",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "A unique identifier used as Primary Key, not derived from business logic, when acting as Foreign Key, references the parent table.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AccommodationDescriptorId",
+ "postgreSql": "AccommodationDescriptorId"
+ }
+ }
+ ],
+ "secondaryEntityFullName": {
+ "schema": "edfi",
+ "name": "StudentAssessmentRegistrationAssessmentAccommodation"
+ },
+ "secondaryEntityProperties": [
+ {
+ "propertyName": "AccommodationDescriptorId",
+ "propertyType": {
+ "dbType": "Int32",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The special variation(s) to be used in how assessments (in general) are presented, how it is administered, or how the test taker is allowed to respond. This generally refers to changes that do not substantially alter what the examination measures. The proper use of accommodations does not substantially change academic level or performance criteria.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AccommodationDescriptorId",
+ "postgreSql": "AccommodationDescriptorId"
+ }
+ }
+ ],
+ "isIdentifying": true,
+ "isRequired": true,
+ "constraintNames": {
+ "sqlServer": "FK_StudentAssessmentRegistrationAssessmentAccommodation_AccommodationDescriptor",
+ "postgreSql": "FK_8f1b98_AccommodationDescriptor"
+ },
+ "potentiallyLogical": false
+ },
+ {
+ "fullName": {
+ "schema": "edfi",
+ "name": "FK_StudentAssessmentRegistrationAssessmentAccommodation_StudentAssessmentRegistration"
+ },
+ "cardinality": "OneToZeroOrMore",
+ "primaryEntityFullName": {
+ "schema": "edfi",
+ "name": "StudentAssessmentRegistration"
+ },
+ "primaryEntityProperties": [
+ {
+ "propertyName": "AdministrationIdentifier",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 255,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The title or name of the assessment in the context of its administration.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AdministrationIdentifier",
+ "postgreSql": "AdministrationIdentifier"
+ }
+ },
+ {
+ "propertyName": "AssessmentIdentifier",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 60,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "A unique number or alphanumeric code assigned to an assessment.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AssessmentIdentifier",
+ "postgreSql": "AssessmentIdentifier"
+ }
+ },
+ {
+ "propertyName": "AssigningEducationOrganizationId",
+ "propertyType": {
+ "dbType": "Int64",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The identifier assigned to an education organization.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AssigningEducationOrganizationId",
+ "postgreSql": "AssigningEducationOrganizationId"
+ }
+ },
+ {
+ "propertyName": "EducationOrganizationId",
+ "propertyType": {
+ "dbType": "Int64",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The identifier assigned to an education organization.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "EducationOrganizationId",
+ "postgreSql": "EducationOrganizationId"
+ }
+ },
+ {
+ "propertyName": "Namespace",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 5,
+ "maxLength": 255,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "Namespace for the assessment.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "Namespace",
+ "postgreSql": "Namespace"
+ }
+ },
+ {
+ "propertyName": "StudentUSI",
+ "propertyType": {
+ "dbType": "Int32",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "A unique alphanumeric code assigned to a student.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "StudentUSI",
+ "postgreSql": "StudentUSI"
+ }
+ }
+ ],
+ "secondaryEntityFullName": {
+ "schema": "edfi",
+ "name": "StudentAssessmentRegistrationAssessmentAccommodation"
+ },
+ "secondaryEntityProperties": [
+ {
+ "propertyName": "AdministrationIdentifier",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 255,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The title or name of the assessment in the context of its administration.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AdministrationIdentifier",
+ "postgreSql": "AdministrationIdentifier"
+ }
+ },
+ {
+ "propertyName": "AssessmentIdentifier",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 60,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "A unique number or alphanumeric code assigned to an assessment.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AssessmentIdentifier",
+ "postgreSql": "AssessmentIdentifier"
+ }
+ },
+ {
+ "propertyName": "AssigningEducationOrganizationId",
+ "propertyType": {
+ "dbType": "Int64",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The identifier assigned to an education organization.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AssigningEducationOrganizationId",
+ "postgreSql": "AssigningEducationOrganizationId"
+ }
+ },
+ {
+ "propertyName": "EducationOrganizationId",
+ "propertyType": {
+ "dbType": "Int64",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The identifier assigned to an education organization.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "EducationOrganizationId",
+ "postgreSql": "EducationOrganizationId"
+ }
+ },
+ {
+ "propertyName": "Namespace",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 5,
+ "maxLength": 255,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "Namespace for the assessment.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "Namespace",
+ "postgreSql": "Namespace"
+ }
+ },
+ {
+ "propertyName": "StudentUSI",
+ "propertyType": {
+ "dbType": "Int32",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "A unique alphanumeric code assigned to a student.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "StudentUSI",
+ "postgreSql": "StudentUSI"
+ }
+ }
+ ],
+ "isIdentifying": true,
+ "isRequired": true,
+ "constraintNames": {
+ "sqlServer": "FK_StudentAssessmentRegistrationAssessmentAccommodation_StudentAssessmentRegistration",
+ "postgreSql": "FK_8f1b98_StudentAssessmentRegistration"
+ },
+ "potentiallyLogical": false
+ },
+ {
+ "fullName": {
+ "schema": "edfi",
+ "name": "FK_StudentAssessmentRegistrationAssessmentCustomization_StudentAssessmentRegistration"
+ },
+ "cardinality": "OneToZeroOrMore",
+ "primaryEntityFullName": {
+ "schema": "edfi",
+ "name": "StudentAssessmentRegistration"
+ },
+ "primaryEntityProperties": [
+ {
+ "propertyName": "AdministrationIdentifier",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 255,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The title or name of the assessment in the context of its administration.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AdministrationIdentifier",
+ "postgreSql": "AdministrationIdentifier"
+ }
+ },
+ {
+ "propertyName": "AssessmentIdentifier",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 60,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "A unique number or alphanumeric code assigned to an assessment.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AssessmentIdentifier",
+ "postgreSql": "AssessmentIdentifier"
+ }
+ },
+ {
+ "propertyName": "AssigningEducationOrganizationId",
+ "propertyType": {
+ "dbType": "Int64",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The identifier assigned to an education organization.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AssigningEducationOrganizationId",
+ "postgreSql": "AssigningEducationOrganizationId"
+ }
+ },
+ {
+ "propertyName": "EducationOrganizationId",
+ "propertyType": {
+ "dbType": "Int64",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The identifier assigned to an education organization.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "EducationOrganizationId",
+ "postgreSql": "EducationOrganizationId"
+ }
+ },
+ {
+ "propertyName": "Namespace",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 5,
+ "maxLength": 255,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "Namespace for the assessment.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "Namespace",
+ "postgreSql": "Namespace"
+ }
+ },
+ {
+ "propertyName": "StudentUSI",
+ "propertyType": {
+ "dbType": "Int32",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "A unique alphanumeric code assigned to a student.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "StudentUSI",
+ "postgreSql": "StudentUSI"
+ }
+ }
+ ],
+ "secondaryEntityFullName": {
+ "schema": "edfi",
+ "name": "StudentAssessmentRegistrationAssessmentCustomization"
+ },
+ "secondaryEntityProperties": [
+ {
+ "propertyName": "AdministrationIdentifier",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 255,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The title or name of the assessment in the context of its administration.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AdministrationIdentifier",
+ "postgreSql": "AdministrationIdentifier"
+ }
+ },
+ {
+ "propertyName": "AssessmentIdentifier",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 60,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "A unique number or alphanumeric code assigned to an assessment.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AssessmentIdentifier",
+ "postgreSql": "AssessmentIdentifier"
+ }
+ },
+ {
+ "propertyName": "AssigningEducationOrganizationId",
+ "propertyType": {
+ "dbType": "Int64",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The identifier assigned to an education organization.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AssigningEducationOrganizationId",
+ "postgreSql": "AssigningEducationOrganizationId"
+ }
+ },
+ {
+ "propertyName": "EducationOrganizationId",
+ "propertyType": {
+ "dbType": "Int64",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The identifier assigned to an education organization.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "EducationOrganizationId",
+ "postgreSql": "EducationOrganizationId"
+ }
+ },
+ {
+ "propertyName": "Namespace",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 5,
+ "maxLength": 255,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "Namespace for the assessment.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "Namespace",
+ "postgreSql": "Namespace"
+ }
+ },
+ {
+ "propertyName": "StudentUSI",
+ "propertyType": {
+ "dbType": "Int32",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "A unique alphanumeric code assigned to a student.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "StudentUSI",
+ "postgreSql": "StudentUSI"
+ }
+ }
+ ],
+ "isIdentifying": true,
+ "isRequired": true,
+ "constraintNames": {
+ "sqlServer": "FK_StudentAssessmentRegistrationAssessmentCustomization_StudentAssessmentRegistration",
+ "postgreSql": "FK_869535_StudentAssessmentRegistration"
+ },
+ "potentiallyLogical": false
+ },
+ {
+ "fullName": {
+ "schema": "edfi",
+ "name": "FK_StudentAssessmentRegistrationBatteryPartAssociation_AssessmentBatteryPart"
+ },
+ "cardinality": "OneToZeroOrMore",
+ "primaryEntityFullName": {
+ "schema": "edfi",
+ "name": "AssessmentBatteryPart"
+ },
+ "primaryEntityProperties": [
+ {
+ "propertyName": "AssessmentBatteryPartName",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 65,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The name of the part of an assessment battery.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AssessmentBatteryPartName",
+ "postgreSql": "AssessmentBatteryPartName"
+ }
+ },
+ {
+ "propertyName": "AssessmentIdentifier",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 60,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "A unique number or alphanumeric code assigned to an assessment.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AssessmentIdentifier",
+ "postgreSql": "AssessmentIdentifier"
+ }
+ },
+ {
+ "propertyName": "Namespace",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 5,
+ "maxLength": 255,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "Namespace for the assessment.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "Namespace",
+ "postgreSql": "Namespace"
+ }
+ }
+ ],
+ "secondaryEntityFullName": {
+ "schema": "edfi",
+ "name": "StudentAssessmentRegistrationBatteryPartAssociation"
+ },
+ "secondaryEntityProperties": [
+ {
+ "propertyName": "AssessmentBatteryPartName",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 65,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The name of the part of an assessment battery.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AssessmentBatteryPartName",
+ "postgreSql": "AssessmentBatteryPartName"
+ }
+ },
+ {
+ "propertyName": "AssessmentIdentifier",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 60,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "A unique number or alphanumeric code assigned to an assessment.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AssessmentIdentifier",
+ "postgreSql": "AssessmentIdentifier"
+ }
+ },
+ {
+ "propertyName": "Namespace",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 5,
+ "maxLength": 255,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "Namespace for the assessment.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "Namespace",
+ "postgreSql": "Namespace"
+ }
+ }
+ ],
+ "isIdentifying": true,
+ "isRequired": true,
+ "constraintNames": {
+ "sqlServer": "FK_StudentAssessmentRegistrationBatteryPartAssociation_AssessmentBatteryPart",
+ "postgreSql": "FK_3bb369_AssessmentBatteryPart"
+ },
+ "potentiallyLogical": false
+ },
+ {
+ "fullName": {
+ "schema": "edfi",
+ "name": "FK_StudentAssessmentRegistrationBatteryPartAssociation_StudentAssessmentRegistration"
+ },
+ "cardinality": "OneToZeroOrMore",
+ "primaryEntityFullName": {
+ "schema": "edfi",
+ "name": "StudentAssessmentRegistration"
+ },
+ "primaryEntityProperties": [
+ {
+ "propertyName": "AdministrationIdentifier",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 255,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The title or name of the assessment in the context of its administration.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AdministrationIdentifier",
+ "postgreSql": "AdministrationIdentifier"
+ }
+ },
+ {
+ "propertyName": "AssessmentIdentifier",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 60,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "A unique number or alphanumeric code assigned to an assessment.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AssessmentIdentifier",
+ "postgreSql": "AssessmentIdentifier"
+ }
+ },
+ {
+ "propertyName": "AssigningEducationOrganizationId",
+ "propertyType": {
+ "dbType": "Int64",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The identifier assigned to an education organization.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AssigningEducationOrganizationId",
+ "postgreSql": "AssigningEducationOrganizationId"
+ }
+ },
+ {
+ "propertyName": "EducationOrganizationId",
+ "propertyType": {
+ "dbType": "Int64",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The identifier assigned to an education organization.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "EducationOrganizationId",
+ "postgreSql": "EducationOrganizationId"
+ }
+ },
+ {
+ "propertyName": "Namespace",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 5,
+ "maxLength": 255,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "Namespace for the assessment.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "Namespace",
+ "postgreSql": "Namespace"
+ }
+ },
+ {
+ "propertyName": "StudentUSI",
+ "propertyType": {
+ "dbType": "Int32",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "A unique alphanumeric code assigned to a student.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "StudentUSI",
+ "postgreSql": "StudentUSI"
+ }
+ }
+ ],
+ "secondaryEntityFullName": {
+ "schema": "edfi",
+ "name": "StudentAssessmentRegistrationBatteryPartAssociation"
+ },
+ "secondaryEntityProperties": [
+ {
+ "propertyName": "AdministrationIdentifier",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 255,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The title or name of the assessment in the context of its administration.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AdministrationIdentifier",
+ "postgreSql": "AdministrationIdentifier"
+ }
+ },
+ {
+ "propertyName": "AssessmentIdentifier",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 60,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "A unique number or alphanumeric code assigned to an assessment.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AssessmentIdentifier",
+ "postgreSql": "AssessmentIdentifier"
+ }
+ },
+ {
+ "propertyName": "AssigningEducationOrganizationId",
+ "propertyType": {
+ "dbType": "Int64",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The identifier assigned to an education organization.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AssigningEducationOrganizationId",
+ "postgreSql": "AssigningEducationOrganizationId"
+ }
+ },
+ {
+ "propertyName": "EducationOrganizationId",
+ "propertyType": {
+ "dbType": "Int64",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The identifier assigned to an education organization.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "EducationOrganizationId",
+ "postgreSql": "EducationOrganizationId"
+ }
+ },
+ {
+ "propertyName": "Namespace",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 5,
+ "maxLength": 255,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "Namespace for the assessment.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "Namespace",
+ "postgreSql": "Namespace"
+ }
+ },
+ {
+ "propertyName": "StudentUSI",
+ "propertyType": {
+ "dbType": "Int32",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "A unique alphanumeric code assigned to a student.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "StudentUSI",
+ "postgreSql": "StudentUSI"
+ }
+ }
+ ],
+ "isIdentifying": true,
+ "isRequired": true,
+ "constraintNames": {
+ "sqlServer": "FK_StudentAssessmentRegistrationBatteryPartAssociation_StudentAssessmentRegistration",
+ "postgreSql": "FK_3bb369_StudentAssessmentRegistration"
+ },
+ "potentiallyLogical": false
+ },
+ {
+ "fullName": {
+ "schema": "edfi",
+ "name": "FK_StudentAssessmentRegistrationBatteryPartAssociationAccommodation_AccommodationDescriptor"
+ },
+ "cardinality": "OneToZeroOrMore",
+ "primaryEntityFullName": {
+ "schema": "edfi",
+ "name": "AccommodationDescriptor"
+ },
+ "primaryEntityProperties": [
+ {
+ "propertyName": "AccommodationDescriptorId",
+ "propertyType": {
+ "dbType": "Int32",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "A unique identifier used as Primary Key, not derived from business logic, when acting as Foreign Key, references the parent table.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AccommodationDescriptorId",
+ "postgreSql": "AccommodationDescriptorId"
+ }
+ }
+ ],
+ "secondaryEntityFullName": {
+ "schema": "edfi",
+ "name": "StudentAssessmentRegistrationBatteryPartAssociationAccommodation"
+ },
+ "secondaryEntityProperties": [
+ {
+ "propertyName": "AccommodationDescriptorId",
+ "propertyType": {
+ "dbType": "Int32",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The special variation(s) to be used for the specific part of the assessment battery on how is presented, how it is administered, or how the test taker is allowed to respond.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AccommodationDescriptorId",
+ "postgreSql": "AccommodationDescriptorId"
+ }
+ }
+ ],
+ "isIdentifying": true,
+ "isRequired": true,
+ "constraintNames": {
+ "sqlServer": "FK_StudentAssessmentRegistrationBatteryPartAssociationAccommodation_AccommodationDescriptor",
+ "postgreSql": "FK_c87694_AccommodationDescriptor"
+ },
+ "potentiallyLogical": false
+ },
+ {
+ "fullName": {
+ "schema": "edfi",
+ "name": "FK_StudentAssessmentRegistrationBatteryPartAssociationAccommodation_StudentAssessmentRegistrationBatteryPartAssociation"
+ },
+ "cardinality": "OneToZeroOrMore",
+ "primaryEntityFullName": {
+ "schema": "edfi",
+ "name": "StudentAssessmentRegistrationBatteryPartAssociation"
+ },
+ "primaryEntityProperties": [
+ {
+ "propertyName": "AdministrationIdentifier",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 255,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The title or name of the assessment in the context of its administration.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AdministrationIdentifier",
+ "postgreSql": "AdministrationIdentifier"
+ }
+ },
+ {
+ "propertyName": "AssessmentBatteryPartName",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 65,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The name of the part of an assessment battery.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AssessmentBatteryPartName",
+ "postgreSql": "AssessmentBatteryPartName"
+ }
+ },
+ {
+ "propertyName": "AssessmentIdentifier",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 60,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "A unique number or alphanumeric code assigned to an assessment.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AssessmentIdentifier",
+ "postgreSql": "AssessmentIdentifier"
+ }
+ },
+ {
+ "propertyName": "AssigningEducationOrganizationId",
+ "propertyType": {
+ "dbType": "Int64",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The identifier assigned to an education organization.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AssigningEducationOrganizationId",
+ "postgreSql": "AssigningEducationOrganizationId"
+ }
+ },
+ {
+ "propertyName": "EducationOrganizationId",
+ "propertyType": {
+ "dbType": "Int64",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The identifier assigned to an education organization.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "EducationOrganizationId",
+ "postgreSql": "EducationOrganizationId"
+ }
+ },
+ {
+ "propertyName": "Namespace",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 5,
+ "maxLength": 255,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "Namespace for the assessment.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "Namespace",
+ "postgreSql": "Namespace"
+ }
+ },
+ {
+ "propertyName": "StudentUSI",
+ "propertyType": {
+ "dbType": "Int32",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "A unique alphanumeric code assigned to a student.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "StudentUSI",
+ "postgreSql": "StudentUSI"
+ }
+ }
+ ],
+ "secondaryEntityFullName": {
+ "schema": "edfi",
+ "name": "StudentAssessmentRegistrationBatteryPartAssociationAccommodation"
+ },
+ "secondaryEntityProperties": [
+ {
+ "propertyName": "AdministrationIdentifier",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 255,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The title or name of the assessment in the context of its administration.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AdministrationIdentifier",
+ "postgreSql": "AdministrationIdentifier"
+ }
+ },
+ {
+ "propertyName": "AssessmentBatteryPartName",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 65,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The name of the part of an assessment battery.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AssessmentBatteryPartName",
+ "postgreSql": "AssessmentBatteryPartName"
+ }
+ },
+ {
+ "propertyName": "AssessmentIdentifier",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 60,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "A unique number or alphanumeric code assigned to an assessment.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AssessmentIdentifier",
+ "postgreSql": "AssessmentIdentifier"
+ }
+ },
+ {
+ "propertyName": "AssigningEducationOrganizationId",
+ "propertyType": {
+ "dbType": "Int64",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The identifier assigned to an education organization.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AssigningEducationOrganizationId",
+ "postgreSql": "AssigningEducationOrganizationId"
+ }
+ },
+ {
+ "propertyName": "EducationOrganizationId",
+ "propertyType": {
+ "dbType": "Int64",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The identifier assigned to an education organization.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "EducationOrganizationId",
+ "postgreSql": "EducationOrganizationId"
+ }
+ },
+ {
+ "propertyName": "Namespace",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 5,
+ "maxLength": 255,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "Namespace for the assessment.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "Namespace",
+ "postgreSql": "Namespace"
+ }
+ },
+ {
+ "propertyName": "StudentUSI",
+ "propertyType": {
+ "dbType": "Int32",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "A unique alphanumeric code assigned to a student.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "StudentUSI",
+ "postgreSql": "StudentUSI"
+ }
+ }
+ ],
+ "isIdentifying": true,
+ "isRequired": true,
+ "constraintNames": {
+ "sqlServer": "FK_StudentAssessmentRegistrationBatteryPartAssociationAccommodation_StudentAssessmentRegistrationBatteryPartAssociation",
+ "postgreSql": "FK_c87694_StudentAssessmentRegistrationBatteryPartAssociation"
},
"potentiallyLogical": false
},
@@ -122628,6 +127506,280 @@
},
"potentiallyLogical": false
},
+ {
+ "fullName": {
+ "schema": "edfi",
+ "name": "FK_StudentEducationOrganizationAssessmentAccommodation_EducationOrganization"
+ },
+ "cardinality": "OneToZeroOrMore",
+ "primaryEntityFullName": {
+ "schema": "edfi",
+ "name": "EducationOrganization"
+ },
+ "primaryEntityProperties": [
+ {
+ "propertyName": "EducationOrganizationId",
+ "propertyType": {
+ "dbType": "Int64",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The identifier assigned to an education organization.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "EducationOrganizationId",
+ "postgreSql": "EducationOrganizationId"
+ }
+ }
+ ],
+ "secondaryEntityFullName": {
+ "schema": "edfi",
+ "name": "StudentEducationOrganizationAssessmentAccommodation"
+ },
+ "secondaryEntityProperties": [
+ {
+ "propertyName": "EducationOrganizationId",
+ "propertyType": {
+ "dbType": "Int64",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The identifier assigned to an education organization.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "EducationOrganizationId",
+ "postgreSql": "EducationOrganizationId"
+ }
+ }
+ ],
+ "isIdentifying": true,
+ "isRequired": true,
+ "constraintNames": {
+ "sqlServer": "FK_StudentEducationOrganizationAssessmentAccommodation_EducationOrganization",
+ "postgreSql": "FK_5f4481_EducationOrganization"
+ },
+ "potentiallyLogical": false
+ },
+ {
+ "fullName": {
+ "schema": "edfi",
+ "name": "FK_StudentEducationOrganizationAssessmentAccommodation_Student"
+ },
+ "cardinality": "OneToZeroOrMore",
+ "primaryEntityFullName": {
+ "schema": "edfi",
+ "name": "Student"
+ },
+ "primaryEntityProperties": [
+ {
+ "propertyName": "StudentUSI",
+ "propertyType": {
+ "dbType": "Int32",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "A unique alphanumeric code assigned to a student.",
+ "isIdentifying": true,
+ "isServerAssigned": true,
+ "columnNames": {
+ "sqlServer": "StudentUSI",
+ "postgreSql": "StudentUSI"
+ }
+ }
+ ],
+ "secondaryEntityFullName": {
+ "schema": "edfi",
+ "name": "StudentEducationOrganizationAssessmentAccommodation"
+ },
+ "secondaryEntityProperties": [
+ {
+ "propertyName": "StudentUSI",
+ "propertyType": {
+ "dbType": "Int32",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "A unique alphanumeric code assigned to a student.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "StudentUSI",
+ "postgreSql": "StudentUSI"
+ }
+ }
+ ],
+ "isIdentifying": true,
+ "isRequired": true,
+ "constraintNames": {
+ "sqlServer": "FK_StudentEducationOrganizationAssessmentAccommodation_Student",
+ "postgreSql": "FK_5f4481_Student"
+ },
+ "potentiallyLogical": false
+ },
+ {
+ "fullName": {
+ "schema": "edfi",
+ "name": "FK_StudentEducationOrganizationAssessmentAccommodationGeneralAccommodation_AccommodationDescriptor"
+ },
+ "cardinality": "OneToZeroOrMore",
+ "primaryEntityFullName": {
+ "schema": "edfi",
+ "name": "AccommodationDescriptor"
+ },
+ "primaryEntityProperties": [
+ {
+ "propertyName": "AccommodationDescriptorId",
+ "propertyType": {
+ "dbType": "Int32",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "A unique identifier used as Primary Key, not derived from business logic, when acting as Foreign Key, references the parent table.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AccommodationDescriptorId",
+ "postgreSql": "AccommodationDescriptorId"
+ }
+ }
+ ],
+ "secondaryEntityFullName": {
+ "schema": "edfi",
+ "name": "StudentEducationOrganizationAssessmentAccommodationGeneralAccommodation"
+ },
+ "secondaryEntityProperties": [
+ {
+ "propertyName": "AccommodationDescriptorId",
+ "propertyType": {
+ "dbType": "Int32",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The special variation(s) to be used in how assessments (in general) are presented, how it is administered, or how the test taker is allowed to respond. This generally refers to changes that do not substantially alter what the examination measures. The proper use of accommodations does not substantially change academic level or performance criteria.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "AccommodationDescriptorId",
+ "postgreSql": "AccommodationDescriptorId"
+ }
+ }
+ ],
+ "isIdentifying": true,
+ "isRequired": true,
+ "constraintNames": {
+ "sqlServer": "FK_StudentEducationOrganizationAssessmentAccommodationGeneralAccommodation_AccommodationDescriptor",
+ "postgreSql": "FK_d1d10a_AccommodationDescriptor"
+ },
+ "potentiallyLogical": false
+ },
+ {
+ "fullName": {
+ "schema": "edfi",
+ "name": "FK_StudentEducationOrganizationAssessmentAccommodationGeneralAccommodation_StudentEducationOrganizationAssessmentAccommodation"
+ },
+ "cardinality": "OneToZeroOrMore",
+ "primaryEntityFullName": {
+ "schema": "edfi",
+ "name": "StudentEducationOrganizationAssessmentAccommodation"
+ },
+ "primaryEntityProperties": [
+ {
+ "propertyName": "EducationOrganizationId",
+ "propertyType": {
+ "dbType": "Int64",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The identifier assigned to an education organization.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "EducationOrganizationId",
+ "postgreSql": "EducationOrganizationId"
+ }
+ },
+ {
+ "propertyName": "StudentUSI",
+ "propertyType": {
+ "dbType": "Int32",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "A unique alphanumeric code assigned to a student.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "StudentUSI",
+ "postgreSql": "StudentUSI"
+ }
+ }
+ ],
+ "secondaryEntityFullName": {
+ "schema": "edfi",
+ "name": "StudentEducationOrganizationAssessmentAccommodationGeneralAccommodation"
+ },
+ "secondaryEntityProperties": [
+ {
+ "propertyName": "EducationOrganizationId",
+ "propertyType": {
+ "dbType": "Int64",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The identifier assigned to an education organization.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "EducationOrganizationId",
+ "postgreSql": "EducationOrganizationId"
+ }
+ },
+ {
+ "propertyName": "StudentUSI",
+ "propertyType": {
+ "dbType": "Int32",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "A unique alphanumeric code assigned to a student.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "StudentUSI",
+ "postgreSql": "StudentUSI"
+ }
+ }
+ ],
+ "isIdentifying": true,
+ "isRequired": true,
+ "constraintNames": {
+ "sqlServer": "FK_StudentEducationOrganizationAssessmentAccommodationGeneralAccommodation_StudentEducationOrganizationAssessmentAccommodation",
+ "postgreSql": "FK_d1d10a_StudentEducationOrganizationAssessmentAccommodation"
+ },
+ "potentiallyLogical": false
+ },
{
"fullName": {
"schema": "edfi",
@@ -137442,23 +142594,550 @@
"isIdentifying": true,
"isRequired": true,
"constraintNames": {
- "sqlServer": "FK_StudentSchoolFoodServiceProgramAssociation_GeneralStudentProgramAssociation",
- "postgreSql": "FK_82e1e5_GeneralStudentProgramAssociation"
+ "sqlServer": "FK_StudentSchoolFoodServiceProgramAssociation_GeneralStudentProgramAssociation",
+ "postgreSql": "FK_82e1e5_GeneralStudentProgramAssociation"
+ }
+ },
+ {
+ "fullName": {
+ "schema": "edfi",
+ "name": "FK_StudentSchoolFoodServiceProgramAssociationSchoolFoodServiceProgramService_SchoolFoodServiceProgramServiceDescriptor"
+ },
+ "cardinality": "OneToZeroOrMore",
+ "primaryEntityFullName": {
+ "schema": "edfi",
+ "name": "SchoolFoodServiceProgramServiceDescriptor"
+ },
+ "primaryEntityProperties": [
+ {
+ "propertyName": "SchoolFoodServiceProgramServiceDescriptorId",
+ "propertyType": {
+ "dbType": "Int32",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "A unique identifier used as Primary Key, not derived from business logic, when acting as Foreign Key, references the parent table.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "SchoolFoodServiceProgramServiceDescriptorId",
+ "postgreSql": "SchoolFoodServiceProgramServiceDescriptorId"
+ }
+ }
+ ],
+ "secondaryEntityFullName": {
+ "schema": "edfi",
+ "name": "StudentSchoolFoodServiceProgramAssociationSchoolFoodServiceProgramService"
+ },
+ "secondaryEntityProperties": [
+ {
+ "propertyName": "SchoolFoodServiceProgramServiceDescriptorId",
+ "propertyType": {
+ "dbType": "Int32",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "Indicates the service being provided to the student by the school food service program.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "SchoolFoodServiceProgramServiceDescriptorId",
+ "postgreSql": "SchoolFoodServiceProgramServiceDescriptorId"
+ }
+ }
+ ],
+ "isIdentifying": true,
+ "isRequired": true,
+ "constraintNames": {
+ "sqlServer": "FK_StudentSchoolFoodServiceProgramAssociationSchoolFoodServiceProgramService_SchoolFoodServiceProgramServiceDescriptor",
+ "postgreSql": "FK_85a0eb_SchoolFoodServiceProgramServiceDescriptor"
+ },
+ "potentiallyLogical": false
+ },
+ {
+ "fullName": {
+ "schema": "edfi",
+ "name": "FK_StudentSchoolFoodServiceProgramAssociationSchoolFoodServiceProgramService_StudentSchoolFoodServiceProgramAssociation"
+ },
+ "cardinality": "OneToZeroOrMore",
+ "primaryEntityFullName": {
+ "schema": "edfi",
+ "name": "StudentSchoolFoodServiceProgramAssociation"
+ },
+ "primaryEntityProperties": [
+ {
+ "propertyName": "BeginDate",
+ "propertyType": {
+ "dbType": "Date",
+ "minLength": 0,
+ "maxLength": 0,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The earliest date the student is involved with the program. Typically, this is the date the student becomes eligible for the program. Note: Date interpretation may vary. Ed-Fi recommends inclusive dates, but states may define dates as inclusive or exclusive. For calculations, align with local guidelines.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "BeginDate",
+ "postgreSql": "BeginDate"
+ }
+ },
+ {
+ "propertyName": "EducationOrganizationId",
+ "propertyType": {
+ "dbType": "Int64",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The identifier assigned to an education organization.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "EducationOrganizationId",
+ "postgreSql": "EducationOrganizationId"
+ }
+ },
+ {
+ "propertyName": "ProgramEducationOrganizationId",
+ "propertyType": {
+ "dbType": "Int64",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The identifier assigned to an education organization.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "ProgramEducationOrganizationId",
+ "postgreSql": "ProgramEducationOrganizationId"
+ }
+ },
+ {
+ "propertyName": "ProgramName",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 60,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The formal name of the program of instruction, training, services, or benefits available through federal, state, or local agencies.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "ProgramName",
+ "postgreSql": "ProgramName"
+ }
+ },
+ {
+ "propertyName": "ProgramTypeDescriptorId",
+ "propertyType": {
+ "dbType": "Int32",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The type of program.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "ProgramTypeDescriptorId",
+ "postgreSql": "ProgramTypeDescriptorId"
+ }
+ },
+ {
+ "propertyName": "StudentUSI",
+ "propertyType": {
+ "dbType": "Int32",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "A unique alphanumeric code assigned to a student.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "StudentUSI",
+ "postgreSql": "StudentUSI"
+ }
+ }
+ ],
+ "secondaryEntityFullName": {
+ "schema": "edfi",
+ "name": "StudentSchoolFoodServiceProgramAssociationSchoolFoodServiceProgramService"
+ },
+ "secondaryEntityProperties": [
+ {
+ "propertyName": "BeginDate",
+ "propertyType": {
+ "dbType": "Date",
+ "minLength": 0,
+ "maxLength": 0,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The earliest date the student is involved with the program. Typically, this is the date the student becomes eligible for the program. Note: Date interpretation may vary. Ed-Fi recommends inclusive dates, but states may define dates as inclusive or exclusive. For calculations, align with local guidelines.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "BeginDate",
+ "postgreSql": "BeginDate"
+ }
+ },
+ {
+ "propertyName": "EducationOrganizationId",
+ "propertyType": {
+ "dbType": "Int64",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The identifier assigned to an education organization.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "EducationOrganizationId",
+ "postgreSql": "EducationOrganizationId"
+ }
+ },
+ {
+ "propertyName": "ProgramEducationOrganizationId",
+ "propertyType": {
+ "dbType": "Int64",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The identifier assigned to an education organization.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "ProgramEducationOrganizationId",
+ "postgreSql": "ProgramEducationOrganizationId"
+ }
+ },
+ {
+ "propertyName": "ProgramName",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 60,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The formal name of the program of instruction, training, services, or benefits available through federal, state, or local agencies.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "ProgramName",
+ "postgreSql": "ProgramName"
+ }
+ },
+ {
+ "propertyName": "ProgramTypeDescriptorId",
+ "propertyType": {
+ "dbType": "Int32",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The type of program.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "ProgramTypeDescriptorId",
+ "postgreSql": "ProgramTypeDescriptorId"
+ }
+ },
+ {
+ "propertyName": "StudentUSI",
+ "propertyType": {
+ "dbType": "Int32",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "A unique alphanumeric code assigned to a student.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "StudentUSI",
+ "postgreSql": "StudentUSI"
+ }
+ }
+ ],
+ "isIdentifying": true,
+ "isRequired": true,
+ "constraintNames": {
+ "sqlServer": "FK_StudentSchoolFoodServiceProgramAssociationSchoolFoodServiceProgramService_StudentSchoolFoodServiceProgramAssociation",
+ "postgreSql": "FK_85a0eb_StudentSchoolFoodServiceProgramAssociation"
+ },
+ "potentiallyLogical": false
+ },
+ {
+ "fullName": {
+ "schema": "edfi",
+ "name": "FK_StudentSection504ProgramAssociation_GeneralStudentProgramAssociation"
+ },
+ "cardinality": "OneToOneInheritance",
+ "primaryEntityFullName": {
+ "schema": "edfi",
+ "name": "GeneralStudentProgramAssociation"
+ },
+ "primaryEntityProperties": [
+ {
+ "propertyName": "BeginDate",
+ "propertyType": {
+ "dbType": "Date",
+ "minLength": 0,
+ "maxLength": 0,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The earliest date the student is involved with the program. Typically, this is the date the student becomes eligible for the program. Note: Date interpretation may vary. Ed-Fi recommends inclusive dates, but states may define dates as inclusive or exclusive. For calculations, align with local guidelines.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "BeginDate",
+ "postgreSql": "BeginDate"
+ }
+ },
+ {
+ "propertyName": "EducationOrganizationId",
+ "propertyType": {
+ "dbType": "Int64",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The identifier assigned to an education organization.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "EducationOrganizationId",
+ "postgreSql": "EducationOrganizationId"
+ }
+ },
+ {
+ "propertyName": "ProgramEducationOrganizationId",
+ "propertyType": {
+ "dbType": "Int64",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The identifier assigned to an education organization.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "ProgramEducationOrganizationId",
+ "postgreSql": "ProgramEducationOrganizationId"
+ }
+ },
+ {
+ "propertyName": "ProgramName",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 60,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The formal name of the program of instruction, training, services, or benefits available through federal, state, or local agencies.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "ProgramName",
+ "postgreSql": "ProgramName"
+ }
+ },
+ {
+ "propertyName": "ProgramTypeDescriptorId",
+ "propertyType": {
+ "dbType": "Int32",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The type of program.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "ProgramTypeDescriptorId",
+ "postgreSql": "ProgramTypeDescriptorId"
+ }
+ },
+ {
+ "propertyName": "StudentUSI",
+ "propertyType": {
+ "dbType": "Int32",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "A unique alphanumeric code assigned to a student.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "StudentUSI",
+ "postgreSql": "StudentUSI"
+ }
+ }
+ ],
+ "secondaryEntityFullName": {
+ "schema": "edfi",
+ "name": "StudentSection504ProgramAssociation"
+ },
+ "secondaryEntityProperties": [
+ {
+ "propertyName": "BeginDate",
+ "propertyType": {
+ "dbType": "Date",
+ "minLength": 0,
+ "maxLength": 0,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The earliest date the student is involved with the program. Typically, this is the date the student becomes eligible for the program. Note: Date interpretation may vary. Ed-Fi recommends inclusive dates, but states may define dates as inclusive or exclusive. For calculations, align with local guidelines.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "BeginDate",
+ "postgreSql": "BeginDate"
+ }
+ },
+ {
+ "propertyName": "EducationOrganizationId",
+ "propertyType": {
+ "dbType": "Int64",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The identifier assigned to an education organization.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "EducationOrganizationId",
+ "postgreSql": "EducationOrganizationId"
+ }
+ },
+ {
+ "propertyName": "ProgramEducationOrganizationId",
+ "propertyType": {
+ "dbType": "Int64",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The identifier assigned to an education organization.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "ProgramEducationOrganizationId",
+ "postgreSql": "ProgramEducationOrganizationId"
+ }
+ },
+ {
+ "propertyName": "ProgramName",
+ "propertyType": {
+ "dbType": "String",
+ "minLength": 0,
+ "maxLength": 60,
+ "precision": 0,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The formal name of the program of instruction, training, services, or benefits available through federal, state, or local agencies.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "ProgramName",
+ "postgreSql": "ProgramName"
+ }
+ },
+ {
+ "propertyName": "ProgramTypeDescriptorId",
+ "propertyType": {
+ "dbType": "Int32",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "The type of program.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "ProgramTypeDescriptorId",
+ "postgreSql": "ProgramTypeDescriptorId"
+ }
+ },
+ {
+ "propertyName": "StudentUSI",
+ "propertyType": {
+ "dbType": "Int32",
+ "maxLength": 0,
+ "precision": 10,
+ "scale": 0,
+ "isNullable": false
+ },
+ "description": "A unique alphanumeric code assigned to a student.",
+ "isIdentifying": true,
+ "isServerAssigned": false,
+ "columnNames": {
+ "sqlServer": "StudentUSI",
+ "postgreSql": "StudentUSI"
+ }
+ }
+ ],
+ "isIdentifying": true,
+ "isRequired": true,
+ "constraintNames": {
+ "sqlServer": "FK_StudentSection504ProgramAssociation_GeneralStudentProgramAssociation",
+ "postgreSql": "FK_6e41ee_GeneralStudentProgramAssociation"
}
},
{
"fullName": {
"schema": "edfi",
- "name": "FK_StudentSchoolFoodServiceProgramAssociationSchoolFoodServiceProgramService_SchoolFoodServiceProgramServiceDescriptor"
+ "name": "FK_StudentSection504ProgramAssociation_Section504DisabilityTypeDescriptor"
},
"cardinality": "OneToZeroOrMore",
"primaryEntityFullName": {
"schema": "edfi",
- "name": "SchoolFoodServiceProgramServiceDescriptor"
+ "name": "Section504DisabilityTypeDescriptor"
},
"primaryEntityProperties": [
{
- "propertyName": "SchoolFoodServiceProgramServiceDescriptorId",
+ "propertyName": "Section504DisabilityTypeDescriptorId",
"propertyType": {
"dbType": "Int32",
"maxLength": 0,
@@ -137467,276 +143146,42 @@
"isNullable": false
},
"description": "A unique identifier used as Primary Key, not derived from business logic, when acting as Foreign Key, references the parent table.",
- "isIdentifying": true,
- "isServerAssigned": false,
- "columnNames": {
- "sqlServer": "SchoolFoodServiceProgramServiceDescriptorId",
- "postgreSql": "SchoolFoodServiceProgramServiceDescriptorId"
- }
- }
- ],
- "secondaryEntityFullName": {
- "schema": "edfi",
- "name": "StudentSchoolFoodServiceProgramAssociationSchoolFoodServiceProgramService"
- },
- "secondaryEntityProperties": [
- {
- "propertyName": "SchoolFoodServiceProgramServiceDescriptorId",
- "propertyType": {
- "dbType": "Int32",
- "maxLength": 0,
- "precision": 10,
- "scale": 0,
- "isNullable": false
- },
- "description": "Indicates the service being provided to the student by the school food service program.",
- "isIdentifying": true,
- "isServerAssigned": false,
- "columnNames": {
- "sqlServer": "SchoolFoodServiceProgramServiceDescriptorId",
- "postgreSql": "SchoolFoodServiceProgramServiceDescriptorId"
- }
- }
- ],
- "isIdentifying": true,
- "isRequired": true,
- "constraintNames": {
- "sqlServer": "FK_StudentSchoolFoodServiceProgramAssociationSchoolFoodServiceProgramService_SchoolFoodServiceProgramServiceDescriptor",
- "postgreSql": "FK_85a0eb_SchoolFoodServiceProgramServiceDescriptor"
- },
- "potentiallyLogical": false
- },
- {
- "fullName": {
- "schema": "edfi",
- "name": "FK_StudentSchoolFoodServiceProgramAssociationSchoolFoodServiceProgramService_StudentSchoolFoodServiceProgramAssociation"
- },
- "cardinality": "OneToZeroOrMore",
- "primaryEntityFullName": {
- "schema": "edfi",
- "name": "StudentSchoolFoodServiceProgramAssociation"
- },
- "primaryEntityProperties": [
- {
- "propertyName": "BeginDate",
- "propertyType": {
- "dbType": "Date",
- "minLength": 0,
- "maxLength": 0,
- "precision": 0,
- "scale": 0,
- "isNullable": false
- },
- "description": "The earliest date the student is involved with the program. Typically, this is the date the student becomes eligible for the program. Note: Date interpretation may vary. Ed-Fi recommends inclusive dates, but states may define dates as inclusive or exclusive. For calculations, align with local guidelines.",
- "isIdentifying": true,
- "isServerAssigned": false,
- "columnNames": {
- "sqlServer": "BeginDate",
- "postgreSql": "BeginDate"
- }
- },
- {
- "propertyName": "EducationOrganizationId",
- "propertyType": {
- "dbType": "Int64",
- "maxLength": 0,
- "precision": 10,
- "scale": 0,
- "isNullable": false
- },
- "description": "The identifier assigned to an education organization.",
- "isIdentifying": true,
- "isServerAssigned": false,
- "columnNames": {
- "sqlServer": "EducationOrganizationId",
- "postgreSql": "EducationOrganizationId"
- }
- },
- {
- "propertyName": "ProgramEducationOrganizationId",
- "propertyType": {
- "dbType": "Int64",
- "maxLength": 0,
- "precision": 10,
- "scale": 0,
- "isNullable": false
- },
- "description": "The identifier assigned to an education organization.",
- "isIdentifying": true,
- "isServerAssigned": false,
- "columnNames": {
- "sqlServer": "ProgramEducationOrganizationId",
- "postgreSql": "ProgramEducationOrganizationId"
- }
- },
- {
- "propertyName": "ProgramName",
- "propertyType": {
- "dbType": "String",
- "minLength": 0,
- "maxLength": 60,
- "precision": 0,
- "scale": 0,
- "isNullable": false
- },
- "description": "The formal name of the program of instruction, training, services, or benefits available through federal, state, or local agencies.",
- "isIdentifying": true,
- "isServerAssigned": false,
- "columnNames": {
- "sqlServer": "ProgramName",
- "postgreSql": "ProgramName"
- }
- },
- {
- "propertyName": "ProgramTypeDescriptorId",
- "propertyType": {
- "dbType": "Int32",
- "maxLength": 0,
- "precision": 10,
- "scale": 0,
- "isNullable": false
- },
- "description": "The type of program.",
- "isIdentifying": true,
- "isServerAssigned": false,
- "columnNames": {
- "sqlServer": "ProgramTypeDescriptorId",
- "postgreSql": "ProgramTypeDescriptorId"
- }
- },
- {
- "propertyName": "StudentUSI",
- "propertyType": {
- "dbType": "Int32",
- "maxLength": 0,
- "precision": 10,
- "scale": 0,
- "isNullable": false
- },
- "description": "A unique alphanumeric code assigned to a student.",
- "isIdentifying": true,
+ "isIdentifying": false,
"isServerAssigned": false,
"columnNames": {
- "sqlServer": "StudentUSI",
- "postgreSql": "StudentUSI"
+ "sqlServer": "Section504DisabilityTypeDescriptorId",
+ "postgreSql": "Section504DisabilityTypeDescriptorId"
}
}
],
"secondaryEntityFullName": {
"schema": "edfi",
- "name": "StudentSchoolFoodServiceProgramAssociationSchoolFoodServiceProgramService"
+ "name": "StudentSection504ProgramAssociation"
},
"secondaryEntityProperties": [
{
- "propertyName": "BeginDate",
- "propertyType": {
- "dbType": "Date",
- "minLength": 0,
- "maxLength": 0,
- "precision": 0,
- "scale": 0,
- "isNullable": false
- },
- "description": "The earliest date the student is involved with the program. Typically, this is the date the student becomes eligible for the program. Note: Date interpretation may vary. Ed-Fi recommends inclusive dates, but states may define dates as inclusive or exclusive. For calculations, align with local guidelines.",
- "isIdentifying": true,
- "isServerAssigned": false,
- "columnNames": {
- "sqlServer": "BeginDate",
- "postgreSql": "BeginDate"
- }
- },
- {
- "propertyName": "EducationOrganizationId",
- "propertyType": {
- "dbType": "Int64",
- "maxLength": 0,
- "precision": 10,
- "scale": 0,
- "isNullable": false
- },
- "description": "The identifier assigned to an education organization.",
- "isIdentifying": true,
- "isServerAssigned": false,
- "columnNames": {
- "sqlServer": "EducationOrganizationId",
- "postgreSql": "EducationOrganizationId"
- }
- },
- {
- "propertyName": "ProgramEducationOrganizationId",
- "propertyType": {
- "dbType": "Int64",
- "maxLength": 0,
- "precision": 10,
- "scale": 0,
- "isNullable": false
- },
- "description": "The identifier assigned to an education organization.",
- "isIdentifying": true,
- "isServerAssigned": false,
- "columnNames": {
- "sqlServer": "ProgramEducationOrganizationId",
- "postgreSql": "ProgramEducationOrganizationId"
- }
- },
- {
- "propertyName": "ProgramName",
- "propertyType": {
- "dbType": "String",
- "minLength": 0,
- "maxLength": 60,
- "precision": 0,
- "scale": 0,
- "isNullable": false
- },
- "description": "The formal name of the program of instruction, training, services, or benefits available through federal, state, or local agencies.",
- "isIdentifying": true,
- "isServerAssigned": false,
- "columnNames": {
- "sqlServer": "ProgramName",
- "postgreSql": "ProgramName"
- }
- },
- {
- "propertyName": "ProgramTypeDescriptorId",
- "propertyType": {
- "dbType": "Int32",
- "maxLength": 0,
- "precision": 10,
- "scale": 0,
- "isNullable": false
- },
- "description": "The type of program.",
- "isIdentifying": true,
- "isServerAssigned": false,
- "columnNames": {
- "sqlServer": "ProgramTypeDescriptorId",
- "postgreSql": "ProgramTypeDescriptorId"
- }
- },
- {
- "propertyName": "StudentUSI",
+ "propertyName": "Section504DisabilityTypeDescriptorId",
"propertyType": {
"dbType": "Int32",
"maxLength": 0,
"precision": 10,
"scale": 0,
- "isNullable": false
+ "isNullable": true
},
- "description": "A unique alphanumeric code assigned to a student.",
- "isIdentifying": true,
+ "description": "Defines one or more disabilities student has that qualifies them for a Section 504 plan.",
+ "isIdentifying": false,
"isServerAssigned": false,
"columnNames": {
- "sqlServer": "StudentUSI",
- "postgreSql": "StudentUSI"
+ "sqlServer": "Section504DisabilityTypeDescriptorId",
+ "postgreSql": "Section504DisabilityTypeDescriptorId"
}
}
],
- "isIdentifying": true,
- "isRequired": true,
+ "isIdentifying": false,
+ "isRequired": false,
"constraintNames": {
- "sqlServer": "FK_StudentSchoolFoodServiceProgramAssociationSchoolFoodServiceProgramService_StudentSchoolFoodServiceProgramAssociation",
- "postgreSql": "FK_85a0eb_StudentSchoolFoodServiceProgramAssociation"
+ "sqlServer": "FK_StudentSection504ProgramAssociation_Section504DisabilityTypeDescriptor",
+ "postgreSql": "FK_6e41ee_Section504DisabilityTypeDescriptor"
},
"potentiallyLogical": false
},
@@ -141629,7 +147074,7 @@
},
"secondaryEntityProperties": [
{
- "propertyName": "EducationOrganizationId",
+ "propertyName": "ProgramEducationOrganizationId",
"propertyType": {
"dbType": "Int64",
"maxLength": 0,
@@ -141641,8 +147086,8 @@
"isIdentifying": true,
"isServerAssigned": false,
"columnNames": {
- "sqlServer": "EducationOrganizationId",
- "postgreSql": "EducationOrganizationId"
+ "sqlServer": "ProgramEducationOrganizationId",
+ "postgreSql": "ProgramEducationOrganizationId"
}
},
{
diff --git a/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/MsSql/Data/Security/2200-AssessmentRegistration-security-metadata.sql b/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/MsSql/Data/Security/2200-AssessmentRegistration-security-metadata.sql
new file mode 100644
index 0000000000..a2dabcdbf2
--- /dev/null
+++ b/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/MsSql/Data/Security/2200-AssessmentRegistration-security-metadata.sql
@@ -0,0 +1,2230 @@
+
+-- SPDX-License-Identifier: Apache-2.0
+-- Licensed to the Ed-Fi Alliance under one or more agreements.
+-- The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0.
+-- See the LICENSE and NOTICES files in the project root for more information.
+
+BEGIN
+ DECLARE
+ @claimId AS INT,
+ @claimName AS nvarchar(max),
+ @parentResourceClaimId AS INT,
+ @existingParentResourceClaimId AS INT,
+ @claimSetId AS INT,
+ @claimSetName AS nvarchar(max),
+ @authorizationStrategyId AS INT,
+ @msg AS nvarchar(max),
+ @createActionId AS INT,
+ @readActionId AS INT,
+ @updateActionId AS INT,
+ @deleteActionId AS INT,
+ @readChangesActionId AS INT,
+ @resourceClaimActionId AS INT,
+ @claimSetResourceClaimActionId AS INT
+
+ DECLARE @claimIdStack AS TABLE (Id INT IDENTITY, ResourceClaimId INT)
+
+ SELECT @createActionId = ActionId
+ FROM [dbo].[Actions] WHERE ActionName = 'Create';
+
+ SELECT @readActionId = ActionId
+ FROM [dbo].[Actions] WHERE ActionName = 'Read';
+
+ SELECT @updateActionId = ActionId
+ FROM [dbo].[Actions] WHERE ActionName = 'Update';
+
+ SELECT @deleteActionId = ActionId
+ FROM [dbo].[Actions] WHERE ActionName = 'Delete';
+
+ SELECT @readChangesActionId = ActionId
+ FROM [dbo].[Actions] WHERE ActionName = 'ReadChanges';
+
+ BEGIN TRANSACTION
+
+ -- Push claimId to the stack
+ INSERT INTO @claimIdStack (ResourceClaimId) VALUES (@claimId)
+
+ -- Processing children of root
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Resource Claim: 'http://ed-fi.org/ods/identity/claims/domains/assessmentMetadata'
+ ----------------------------------------------------------------------------------------------------------------------------
+ SET @claimName = 'http://ed-fi.org/ods/identity/claims/domains/assessmentMetadata'
+ SET @claimId = NULL
+
+ SELECT @claimId = ResourceClaimId, @existingParentResourceClaimId = ParentResourceClaimId
+ FROM dbo.ResourceClaims
+ WHERE ClaimName = @claimName
+
+ SELECT @parentResourceClaimId = ResourceClaimId
+ FROM @claimIdStack
+ WHERE Id = (SELECT Max(Id) FROM @claimIdStack)
+
+ IF @claimId IS NULL
+ BEGIN
+ PRINT 'Creating new claim: ' + @claimName
+
+ INSERT INTO dbo.ResourceClaims(ResourceName, ClaimName, ParentResourceClaimId)
+ VALUES ('assessmentMetadata', 'http://ed-fi.org/ods/identity/claims/domains/assessmentMetadata', @parentResourceClaimId)
+
+ SET @claimId = SCOPE_IDENTITY()
+ END
+ ELSE
+ BEGIN
+ IF @parentResourceClaimId != @existingParentResourceClaimId OR (@parentResourceClaimId IS NULL AND @existingParentResourceClaimId IS NOT NULL) OR (@parentResourceClaimId IS NOT NULL AND @existingParentResourceClaimId IS NULL)
+ BEGIN
+ PRINT 'Repointing claim ''' + @claimName + ''' (ResourceClaimId=' + CONVERT(nvarchar, @claimId) + ') to new parent (ResourceClaimId=' + CONVERT(nvarchar, @parentResourceClaimId) + ')'
+
+ UPDATE dbo.ResourceClaims
+ SET ParentResourceClaimId = @parentResourceClaimId
+ WHERE ResourceClaimId = @claimId
+ END
+ END
+
+ -- Setting default authorization metadata
+ PRINT 'Deleting default action authorizations for resource claim ''' + @claimName + ''' (claimId=' + CONVERT(nvarchar, @claimId) + ').'
+
+ DELETE FROM dbo.ResourceClaimActionAuthorizationStrategies
+ WHERE ResourceClaimActionId IN (SELECT ResourceClaimActionId FROM dbo.ResourceClaimActions WHERE ResourceClaimId = @claimId);
+
+ DELETE FROM dbo.ResourceClaimActions
+ WHERE ResourceClaimId = @claimId
+
+ -- Default Create authorization
+ PRINT 'Creating action ''Create'' for resource claim ''' + @claimName + ''' (claimId=' + CONVERT(nvarchar, @claimId) + ').'
+ INSERT INTO dbo.ResourceClaimActions(ResourceClaimId, ActionId)
+ VALUES (@claimId, @CreateActionId)
+
+ SET @resourceClaimActionId = SCOPE_IDENTITY()
+
+
+ SET @authorizationStrategyId = NULL
+
+ SELECT @authorizationStrategyId = a.AuthorizationStrategyId
+ FROM dbo.AuthorizationStrategies a
+ WHERE a.AuthorizationStrategyName = 'NamespaceBased'
+
+ IF @authorizationStrategyId IS NULL
+ BEGIN
+ SET @msg = 'AuthorizationStrategy does not exist: ''NamespaceBased''';
+ THROW 50000, @msg, 1
+ END
+
+ PRINT 'Adding authorization strategy ''NamespaceBased'' for resource claim ''' + @claimName + ''' (claimId=' + CONVERT(nvarchar, @claimId) + ').'
+ INSERT INTO dbo.ResourceClaimActionAuthorizationStrategies(ResourceClaimActionId, AuthorizationStrategyId)
+ VALUES (@resourceClaimActionId, @authorizationStrategyId)
+
+
+ -- Default Read authorization
+ PRINT 'Creating action ''Read'' for resource claim ''' + @claimName + ''' (claimId=' + CONVERT(nvarchar, @claimId) + ').'
+ INSERT INTO dbo.ResourceClaimActions(ResourceClaimId, ActionId)
+ VALUES (@claimId, @ReadActionId)
+
+ SET @resourceClaimActionId = SCOPE_IDENTITY()
+
+
+ SET @authorizationStrategyId = NULL
+
+ SELECT @authorizationStrategyId = a.AuthorizationStrategyId
+ FROM dbo.AuthorizationStrategies a
+ WHERE a.AuthorizationStrategyName = 'NamespaceBased'
+
+ IF @authorizationStrategyId IS NULL
+ BEGIN
+ SET @msg = 'AuthorizationStrategy does not exist: ''NamespaceBased''';
+ THROW 50000, @msg, 1
+ END
+
+ PRINT 'Adding authorization strategy ''NamespaceBased'' for resource claim ''' + @claimName + ''' (claimId=' + CONVERT(nvarchar, @claimId) + ').'
+ INSERT INTO dbo.ResourceClaimActionAuthorizationStrategies(ResourceClaimActionId, AuthorizationStrategyId)
+ VALUES (@resourceClaimActionId, @authorizationStrategyId)
+
+
+ -- Default Update authorization
+ PRINT 'Creating action ''Update'' for resource claim ''' + @claimName + ''' (claimId=' + CONVERT(nvarchar, @claimId) + ').'
+ INSERT INTO dbo.ResourceClaimActions(ResourceClaimId, ActionId)
+ VALUES (@claimId, @UpdateActionId)
+
+ SET @resourceClaimActionId = SCOPE_IDENTITY()
+
+
+ SET @authorizationStrategyId = NULL
+
+ SELECT @authorizationStrategyId = a.AuthorizationStrategyId
+ FROM dbo.AuthorizationStrategies a
+ WHERE a.AuthorizationStrategyName = 'NamespaceBased'
+
+ IF @authorizationStrategyId IS NULL
+ BEGIN
+ SET @msg = 'AuthorizationStrategy does not exist: ''NamespaceBased''';
+ THROW 50000, @msg, 1
+ END
+
+ PRINT 'Adding authorization strategy ''NamespaceBased'' for resource claim ''' + @claimName + ''' (claimId=' + CONVERT(nvarchar, @claimId) + ').'
+ INSERT INTO dbo.ResourceClaimActionAuthorizationStrategies(ResourceClaimActionId, AuthorizationStrategyId)
+ VALUES (@resourceClaimActionId, @authorizationStrategyId)
+
+
+ -- Default Delete authorization
+ PRINT 'Creating action ''Delete'' for resource claim ''' + @claimName + ''' (claimId=' + CONVERT(nvarchar, @claimId) + ').'
+ INSERT INTO dbo.ResourceClaimActions(ResourceClaimId, ActionId)
+ VALUES (@claimId, @DeleteActionId)
+
+ SET @resourceClaimActionId = SCOPE_IDENTITY()
+
+
+ SET @authorizationStrategyId = NULL
+
+ SELECT @authorizationStrategyId = a.AuthorizationStrategyId
+ FROM dbo.AuthorizationStrategies a
+ WHERE a.AuthorizationStrategyName = 'NamespaceBased'
+
+ IF @authorizationStrategyId IS NULL
+ BEGIN
+ SET @msg = 'AuthorizationStrategy does not exist: ''NamespaceBased''';
+ THROW 50000, @msg, 1
+ END
+
+ PRINT 'Adding authorization strategy ''NamespaceBased'' for resource claim ''' + @claimName + ''' (claimId=' + CONVERT(nvarchar, @claimId) + ').'
+ INSERT INTO dbo.ResourceClaimActionAuthorizationStrategies(ResourceClaimActionId, AuthorizationStrategyId)
+ VALUES (@resourceClaimActionId, @authorizationStrategyId)
+
+
+ -- Processing claim sets for http://ed-fi.org/ods/identity/claims/domains/assessmentMetadata
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Claim set: 'SIS Vendor'
+ ----------------------------------------------------------------------------------------------------------------------------
+ SET @claimSetName = 'SIS Vendor'
+ SET @claimSetId = NULL
+
+ SELECT @claimSetId = ClaimSetId
+ FROM dbo.ClaimSets
+ WHERE ClaimSetName = @claimSetName
+
+ IF @claimSetId IS NULL
+ BEGIN
+ PRINT 'Creating new claim set: ' + @claimSetName
+
+ INSERT INTO dbo.ClaimSets(ClaimSetName)
+ VALUES (@claimSetName)
+
+ SET @claimSetId = SCOPE_IDENTITY()
+ END
+
+ PRINT 'Deleting existing actions for claim set ''' + @claimSetName + ''' (claimSetId=' + CONVERT(nvarchar, @claimSetId) + ') on resource claim ''' + @claimName + '''.'
+
+ DELETE FROM dbo.ClaimSetResourceClaimActionAuthorizationStrategyOverrides
+ WHERE ClaimSetResourceClaimActionId IN (SELECT ClaimSetResourceClaimActionId FROM dbo.ClaimSetResourceClaimActions WHERE ClaimSetId = @claimSetId AND ResourceClaimId = @claimId)
+
+ DELETE FROM dbo.ClaimSetResourceClaimActions
+ WHERE ClaimSetId = @claimSetId AND ResourceClaimId = @claimId
+
+
+ -- Claim set-specific Create authorization
+ PRINT 'Creating ''Create'' action for claim set ''' + @claimSetName + ''' (claimSetId=' + CONVERT(nvarchar, @claimSetId) + ', actionId = ' + CONVERT(nvarchar, @CreateActionId) + ').'
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (@claimId, @claimSetId, @CreateActionId) -- Create
+
+ SET @claimSetResourceClaimActionId = SCOPE_IDENTITY()
+
+
+
+
+ -- Claim set-specific Read authorization
+ PRINT 'Creating ''Read'' action for claim set ''' + @claimSetName + ''' (claimSetId=' + CONVERT(nvarchar, @claimSetId) + ', actionId = ' + CONVERT(nvarchar, @ReadActionId) + ').'
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (@claimId, @claimSetId, @ReadActionId) -- Read
+
+ SET @claimSetResourceClaimActionId = SCOPE_IDENTITY()
+
+
+
+
+ -- Claim set-specific Update authorization
+ PRINT 'Creating ''Update'' action for claim set ''' + @claimSetName + ''' (claimSetId=' + CONVERT(nvarchar, @claimSetId) + ', actionId = ' + CONVERT(nvarchar, @UpdateActionId) + ').'
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (@claimId, @claimSetId, @UpdateActionId) -- Update
+
+ SET @claimSetResourceClaimActionId = SCOPE_IDENTITY()
+
+
+
+
+ -- Claim set-specific Delete authorization
+ PRINT 'Creating ''Delete'' action for claim set ''' + @claimSetName + ''' (claimSetId=' + CONVERT(nvarchar, @claimSetId) + ', actionId = ' + CONVERT(nvarchar, @DeleteActionId) + ').'
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (@claimId, @claimSetId, @DeleteActionId) -- Delete
+
+ SET @claimSetResourceClaimActionId = SCOPE_IDENTITY()
+
+
+
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Claim set: 'Ed-Fi Sandbox'
+ ----------------------------------------------------------------------------------------------------------------------------
+ SET @claimSetName = 'Ed-Fi Sandbox'
+ SET @claimSetId = NULL
+
+ SELECT @claimSetId = ClaimSetId
+ FROM dbo.ClaimSets
+ WHERE ClaimSetName = @claimSetName
+
+ IF @claimSetId IS NULL
+ BEGIN
+ PRINT 'Creating new claim set: ' + @claimSetName
+
+ INSERT INTO dbo.ClaimSets(ClaimSetName)
+ VALUES (@claimSetName)
+
+ SET @claimSetId = SCOPE_IDENTITY()
+ END
+
+ PRINT 'Deleting existing actions for claim set ''' + @claimSetName + ''' (claimSetId=' + CONVERT(nvarchar, @claimSetId) + ') on resource claim ''' + @claimName + '''.'
+
+ DELETE FROM dbo.ClaimSetResourceClaimActionAuthorizationStrategyOverrides
+ WHERE ClaimSetResourceClaimActionId IN (SELECT ClaimSetResourceClaimActionId FROM dbo.ClaimSetResourceClaimActions WHERE ClaimSetId = @claimSetId AND ResourceClaimId = @claimId)
+
+ DELETE FROM dbo.ClaimSetResourceClaimActions
+ WHERE ClaimSetId = @claimSetId AND ResourceClaimId = @claimId
+
+
+ -- Claim set-specific Create authorization
+ PRINT 'Creating ''Create'' action for claim set ''' + @claimSetName + ''' (claimSetId=' + CONVERT(nvarchar, @claimSetId) + ', actionId = ' + CONVERT(nvarchar, @CreateActionId) + ').'
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (@claimId, @claimSetId, @CreateActionId) -- Create
+
+ SET @claimSetResourceClaimActionId = SCOPE_IDENTITY()
+
+
+
+
+ -- Claim set-specific Read authorization
+ PRINT 'Creating ''Read'' action for claim set ''' + @claimSetName + ''' (claimSetId=' + CONVERT(nvarchar, @claimSetId) + ', actionId = ' + CONVERT(nvarchar, @ReadActionId) + ').'
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (@claimId, @claimSetId, @ReadActionId) -- Read
+
+ SET @claimSetResourceClaimActionId = SCOPE_IDENTITY()
+
+
+
+
+ -- Claim set-specific Update authorization
+ PRINT 'Creating ''Update'' action for claim set ''' + @claimSetName + ''' (claimSetId=' + CONVERT(nvarchar, @claimSetId) + ', actionId = ' + CONVERT(nvarchar, @UpdateActionId) + ').'
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (@claimId, @claimSetId, @UpdateActionId) -- Update
+
+ SET @claimSetResourceClaimActionId = SCOPE_IDENTITY()
+
+
+
+
+ -- Claim set-specific Delete authorization
+ PRINT 'Creating ''Delete'' action for claim set ''' + @claimSetName + ''' (claimSetId=' + CONVERT(nvarchar, @claimSetId) + ', actionId = ' + CONVERT(nvarchar, @DeleteActionId) + ').'
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (@claimId, @claimSetId, @DeleteActionId) -- Delete
+
+ SET @claimSetResourceClaimActionId = SCOPE_IDENTITY()
+
+
+
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Claim set: 'Assessment Vendor'
+ ----------------------------------------------------------------------------------------------------------------------------
+ SET @claimSetName = 'Assessment Vendor'
+ SET @claimSetId = NULL
+
+ SELECT @claimSetId = ClaimSetId
+ FROM dbo.ClaimSets
+ WHERE ClaimSetName = @claimSetName
+
+ IF @claimSetId IS NULL
+ BEGIN
+ PRINT 'Creating new claim set: ' + @claimSetName
+
+ INSERT INTO dbo.ClaimSets(ClaimSetName)
+ VALUES (@claimSetName)
+
+ SET @claimSetId = SCOPE_IDENTITY()
+ END
+
+ PRINT 'Deleting existing actions for claim set ''' + @claimSetName + ''' (claimSetId=' + CONVERT(nvarchar, @claimSetId) + ') on resource claim ''' + @claimName + '''.'
+
+ DELETE FROM dbo.ClaimSetResourceClaimActionAuthorizationStrategyOverrides
+ WHERE ClaimSetResourceClaimActionId IN (SELECT ClaimSetResourceClaimActionId FROM dbo.ClaimSetResourceClaimActions WHERE ClaimSetId = @claimSetId AND ResourceClaimId = @claimId)
+
+ DELETE FROM dbo.ClaimSetResourceClaimActions
+ WHERE ClaimSetId = @claimSetId AND ResourceClaimId = @claimId
+
+
+ -- Claim set-specific Create authorization
+ PRINT 'Creating ''Create'' action for claim set ''' + @claimSetName + ''' (claimSetId=' + CONVERT(nvarchar, @claimSetId) + ', actionId = ' + CONVERT(nvarchar, @CreateActionId) + ').'
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (@claimId, @claimSetId, @CreateActionId) -- Create
+
+ SET @claimSetResourceClaimActionId = SCOPE_IDENTITY()
+
+
+
+
+ -- Claim set-specific Read authorization
+ PRINT 'Creating ''Read'' action for claim set ''' + @claimSetName + ''' (claimSetId=' + CONVERT(nvarchar, @claimSetId) + ', actionId = ' + CONVERT(nvarchar, @ReadActionId) + ').'
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (@claimId, @claimSetId, @ReadActionId) -- Read
+
+ SET @claimSetResourceClaimActionId = SCOPE_IDENTITY()
+
+
+
+
+ -- Claim set-specific Update authorization
+ PRINT 'Creating ''Update'' action for claim set ''' + @claimSetName + ''' (claimSetId=' + CONVERT(nvarchar, @claimSetId) + ', actionId = ' + CONVERT(nvarchar, @UpdateActionId) + ').'
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (@claimId, @claimSetId, @UpdateActionId) -- Update
+
+ SET @claimSetResourceClaimActionId = SCOPE_IDENTITY()
+
+
+
+
+ -- Claim set-specific Delete authorization
+ PRINT 'Creating ''Delete'' action for claim set ''' + @claimSetName + ''' (claimSetId=' + CONVERT(nvarchar, @claimSetId) + ', actionId = ' + CONVERT(nvarchar, @DeleteActionId) + ').'
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (@claimId, @claimSetId, @DeleteActionId) -- Delete
+
+ SET @claimSetResourceClaimActionId = SCOPE_IDENTITY()
+
+
+
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Claim set: 'District Hosted SIS Vendor'
+ ----------------------------------------------------------------------------------------------------------------------------
+ SET @claimSetName = 'District Hosted SIS Vendor'
+ SET @claimSetId = NULL
+
+ SELECT @claimSetId = ClaimSetId
+ FROM dbo.ClaimSets
+ WHERE ClaimSetName = @claimSetName
+
+ IF @claimSetId IS NULL
+ BEGIN
+ PRINT 'Creating new claim set: ' + @claimSetName
+
+ INSERT INTO dbo.ClaimSets(ClaimSetName)
+ VALUES (@claimSetName)
+
+ SET @claimSetId = SCOPE_IDENTITY()
+ END
+
+ PRINT 'Deleting existing actions for claim set ''' + @claimSetName + ''' (claimSetId=' + CONVERT(nvarchar, @claimSetId) + ') on resource claim ''' + @claimName + '''.'
+
+ DELETE FROM dbo.ClaimSetResourceClaimActionAuthorizationStrategyOverrides
+ WHERE ClaimSetResourceClaimActionId IN (SELECT ClaimSetResourceClaimActionId FROM dbo.ClaimSetResourceClaimActions WHERE ClaimSetId = @claimSetId AND ResourceClaimId = @claimId)
+
+ DELETE FROM dbo.ClaimSetResourceClaimActions
+ WHERE ClaimSetId = @claimSetId AND ResourceClaimId = @claimId
+
+
+ -- Claim set-specific Create authorization
+ PRINT 'Creating ''Create'' action for claim set ''' + @claimSetName + ''' (claimSetId=' + CONVERT(nvarchar, @claimSetId) + ', actionId = ' + CONVERT(nvarchar, @CreateActionId) + ').'
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (@claimId, @claimSetId, @CreateActionId) -- Create
+
+ SET @claimSetResourceClaimActionId = SCOPE_IDENTITY()
+
+
+
+
+ -- Claim set-specific Read authorization
+ PRINT 'Creating ''Read'' action for claim set ''' + @claimSetName + ''' (claimSetId=' + CONVERT(nvarchar, @claimSetId) + ', actionId = ' + CONVERT(nvarchar, @ReadActionId) + ').'
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (@claimId, @claimSetId, @ReadActionId) -- Read
+
+ SET @claimSetResourceClaimActionId = SCOPE_IDENTITY()
+
+
+
+
+ -- Claim set-specific Update authorization
+ PRINT 'Creating ''Update'' action for claim set ''' + @claimSetName + ''' (claimSetId=' + CONVERT(nvarchar, @claimSetId) + ', actionId = ' + CONVERT(nvarchar, @UpdateActionId) + ').'
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (@claimId, @claimSetId, @UpdateActionId) -- Update
+
+ SET @claimSetResourceClaimActionId = SCOPE_IDENTITY()
+
+
+
+
+ -- Claim set-specific Delete authorization
+ PRINT 'Creating ''Delete'' action for claim set ''' + @claimSetName + ''' (claimSetId=' + CONVERT(nvarchar, @claimSetId) + ', actionId = ' + CONVERT(nvarchar, @DeleteActionId) + ').'
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (@claimId, @claimSetId, @DeleteActionId) -- Delete
+
+ SET @claimSetResourceClaimActionId = SCOPE_IDENTITY()
+
+
+
+ -- Push claimId to the stack
+ INSERT INTO @claimIdStack (ResourceClaimId) VALUES (@claimId)
+
+ -- Processing children of http://ed-fi.org/ods/identity/claims/domains/assessmentMetadata
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Resource Claim: 'http://ed-fi.org/ods/identity/claims/assessmentAdministration'
+ ----------------------------------------------------------------------------------------------------------------------------
+ SET @claimName = 'http://ed-fi.org/ods/identity/claims/assessmentAdministration'
+ SET @claimId = NULL
+
+ SELECT @claimId = ResourceClaimId, @existingParentResourceClaimId = ParentResourceClaimId
+ FROM dbo.ResourceClaims
+ WHERE ClaimName = @claimName
+
+ SELECT @parentResourceClaimId = ResourceClaimId
+ FROM @claimIdStack
+ WHERE Id = (SELECT Max(Id) FROM @claimIdStack)
+
+ IF @claimId IS NULL
+ BEGIN
+ PRINT 'Creating new claim: ' + @claimName
+
+ INSERT INTO dbo.ResourceClaims(ResourceName, ClaimName, ParentResourceClaimId)
+ VALUES ('assessmentAdministration', 'http://ed-fi.org/ods/identity/claims/assessmentAdministration', @parentResourceClaimId)
+
+ SET @claimId = SCOPE_IDENTITY()
+ END
+ ELSE
+ BEGIN
+ IF @parentResourceClaimId != @existingParentResourceClaimId OR (@parentResourceClaimId IS NULL AND @existingParentResourceClaimId IS NOT NULL) OR (@parentResourceClaimId IS NOT NULL AND @existingParentResourceClaimId IS NULL)
+ BEGIN
+ PRINT 'Repointing claim ''' + @claimName + ''' (ResourceClaimId=' + CONVERT(nvarchar, @claimId) + ') to new parent (ResourceClaimId=' + CONVERT(nvarchar, @parentResourceClaimId) + ')'
+
+ UPDATE dbo.ResourceClaims
+ SET ParentResourceClaimId = @parentResourceClaimId
+ WHERE ResourceClaimId = @claimId
+ END
+ END
+
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Resource Claim: 'http://ed-fi.org/ods/identity/claims/assessmentAdministrationAssessmentAdminstrationPeriod'
+ ----------------------------------------------------------------------------------------------------------------------------
+ SET @claimName = 'http://ed-fi.org/ods/identity/claims/assessmentAdministrationAssessmentAdminstrationPeriod'
+ SET @claimId = NULL
+
+ SELECT @claimId = ResourceClaimId, @existingParentResourceClaimId = ParentResourceClaimId
+ FROM dbo.ResourceClaims
+ WHERE ClaimName = @claimName
+
+ SELECT @parentResourceClaimId = ResourceClaimId
+ FROM @claimIdStack
+ WHERE Id = (SELECT Max(Id) FROM @claimIdStack)
+
+ IF @claimId IS NULL
+ BEGIN
+ PRINT 'Creating new claim: ' + @claimName
+
+ INSERT INTO dbo.ResourceClaims(ResourceName, ClaimName, ParentResourceClaimId)
+ VALUES ('assessmentAdministrationAssessmentAdminstrationPeriod', 'http://ed-fi.org/ods/identity/claims/assessmentAdministrationAssessmentAdminstrationPeriod', @parentResourceClaimId)
+
+ SET @claimId = SCOPE_IDENTITY()
+ END
+ ELSE
+ BEGIN
+ IF @parentResourceClaimId != @existingParentResourceClaimId OR (@parentResourceClaimId IS NULL AND @existingParentResourceClaimId IS NOT NULL) OR (@parentResourceClaimId IS NOT NULL AND @existingParentResourceClaimId IS NULL)
+ BEGIN
+ PRINT 'Repointing claim ''' + @claimName + ''' (ResourceClaimId=' + CONVERT(nvarchar, @claimId) + ') to new parent (ResourceClaimId=' + CONVERT(nvarchar, @parentResourceClaimId) + ')'
+
+ UPDATE dbo.ResourceClaims
+ SET ParentResourceClaimId = @parentResourceClaimId
+ WHERE ResourceClaimId = @claimId
+ END
+ END
+
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Resource Claim: 'http://ed-fi.org/ods/identity/claims/assessmentAdministrationAssessmentBatteryPart'
+ ----------------------------------------------------------------------------------------------------------------------------
+ SET @claimName = 'http://ed-fi.org/ods/identity/claims/assessmentAdministrationAssessmentBatteryPart'
+ SET @claimId = NULL
+
+ SELECT @claimId = ResourceClaimId, @existingParentResourceClaimId = ParentResourceClaimId
+ FROM dbo.ResourceClaims
+ WHERE ClaimName = @claimName
+
+ SELECT @parentResourceClaimId = ResourceClaimId
+ FROM @claimIdStack
+ WHERE Id = (SELECT Max(Id) FROM @claimIdStack)
+
+ IF @claimId IS NULL
+ BEGIN
+ PRINT 'Creating new claim: ' + @claimName
+
+ INSERT INTO dbo.ResourceClaims(ResourceName, ClaimName, ParentResourceClaimId)
+ VALUES ('assessmentAdministrationAssessmentBatteryPart', 'http://ed-fi.org/ods/identity/claims/assessmentAdministrationAssessmentBatteryPart', @parentResourceClaimId)
+
+ SET @claimId = SCOPE_IDENTITY()
+ END
+ ELSE
+ BEGIN
+ IF @parentResourceClaimId != @existingParentResourceClaimId OR (@parentResourceClaimId IS NULL AND @existingParentResourceClaimId IS NOT NULL) OR (@parentResourceClaimId IS NOT NULL AND @existingParentResourceClaimId IS NULL)
+ BEGIN
+ PRINT 'Repointing claim ''' + @claimName + ''' (ResourceClaimId=' + CONVERT(nvarchar, @claimId) + ') to new parent (ResourceClaimId=' + CONVERT(nvarchar, @parentResourceClaimId) + ')'
+
+ UPDATE dbo.ResourceClaims
+ SET ParentResourceClaimId = @parentResourceClaimId
+ WHERE ResourceClaimId = @claimId
+ END
+ END
+
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Resource Claim: 'http://ed-fi.org/ods/identity/claims/assessmentBatteryPart'
+ ----------------------------------------------------------------------------------------------------------------------------
+ SET @claimName = 'http://ed-fi.org/ods/identity/claims/assessmentBatteryPart'
+ SET @claimId = NULL
+
+ SELECT @claimId = ResourceClaimId, @existingParentResourceClaimId = ParentResourceClaimId
+ FROM dbo.ResourceClaims
+ WHERE ClaimName = @claimName
+
+ SELECT @parentResourceClaimId = ResourceClaimId
+ FROM @claimIdStack
+ WHERE Id = (SELECT Max(Id) FROM @claimIdStack)
+
+ IF @claimId IS NULL
+ BEGIN
+ PRINT 'Creating new claim: ' + @claimName
+
+ INSERT INTO dbo.ResourceClaims(ResourceName, ClaimName, ParentResourceClaimId)
+ VALUES ('assessmentBatteryPart', 'http://ed-fi.org/ods/identity/claims/assessmentBatteryPart', @parentResourceClaimId)
+
+ SET @claimId = SCOPE_IDENTITY()
+ END
+ ELSE
+ BEGIN
+ IF @parentResourceClaimId != @existingParentResourceClaimId OR (@parentResourceClaimId IS NULL AND @existingParentResourceClaimId IS NOT NULL) OR (@parentResourceClaimId IS NOT NULL AND @existingParentResourceClaimId IS NULL)
+ BEGIN
+ PRINT 'Repointing claim ''' + @claimName + ''' (ResourceClaimId=' + CONVERT(nvarchar, @claimId) + ') to new parent (ResourceClaimId=' + CONVERT(nvarchar, @parentResourceClaimId) + ')'
+
+ UPDATE dbo.ResourceClaims
+ SET ParentResourceClaimId = @parentResourceClaimId
+ WHERE ResourceClaimId = @claimId
+ END
+ END
+
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Resource Claim: 'http://ed-fi.org/ods/identity/claims/assessmentBatteryPartObjectiveAssessment'
+ ----------------------------------------------------------------------------------------------------------------------------
+ SET @claimName = 'http://ed-fi.org/ods/identity/claims/assessmentBatteryPartObjectiveAssessment'
+ SET @claimId = NULL
+
+ SELECT @claimId = ResourceClaimId, @existingParentResourceClaimId = ParentResourceClaimId
+ FROM dbo.ResourceClaims
+ WHERE ClaimName = @claimName
+
+ SELECT @parentResourceClaimId = ResourceClaimId
+ FROM @claimIdStack
+ WHERE Id = (SELECT Max(Id) FROM @claimIdStack)
+
+ IF @claimId IS NULL
+ BEGIN
+ PRINT 'Creating new claim: ' + @claimName
+
+ INSERT INTO dbo.ResourceClaims(ResourceName, ClaimName, ParentResourceClaimId)
+ VALUES ('assessmentBatteryPartObjectiveAssessment', 'http://ed-fi.org/ods/identity/claims/assessmentBatteryPartObjectiveAssessment', @parentResourceClaimId)
+
+ SET @claimId = SCOPE_IDENTITY()
+ END
+ ELSE
+ BEGIN
+ IF @parentResourceClaimId != @existingParentResourceClaimId OR (@parentResourceClaimId IS NULL AND @existingParentResourceClaimId IS NOT NULL) OR (@parentResourceClaimId IS NOT NULL AND @existingParentResourceClaimId IS NULL)
+ BEGIN
+ PRINT 'Repointing claim ''' + @claimName + ''' (ResourceClaimId=' + CONVERT(nvarchar, @claimId) + ') to new parent (ResourceClaimId=' + CONVERT(nvarchar, @parentResourceClaimId) + ')'
+
+ UPDATE dbo.ResourceClaims
+ SET ParentResourceClaimId = @parentResourceClaimId
+ WHERE ResourceClaimId = @claimId
+ END
+ END
+
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Resource Claim: 'http://ed-fi.org/ods/identity/claims/assesssmentAdministrationParticipation'
+ ----------------------------------------------------------------------------------------------------------------------------
+ SET @claimName = 'http://ed-fi.org/ods/identity/claims/assesssmentAdministrationParticipation'
+ SET @claimId = NULL
+
+ SELECT @claimId = ResourceClaimId, @existingParentResourceClaimId = ParentResourceClaimId
+ FROM dbo.ResourceClaims
+ WHERE ClaimName = @claimName
+
+ SELECT @parentResourceClaimId = ResourceClaimId
+ FROM @claimIdStack
+ WHERE Id = (SELECT Max(Id) FROM @claimIdStack)
+
+ IF @claimId IS NULL
+ BEGIN
+ PRINT 'Creating new claim: ' + @claimName
+
+ INSERT INTO dbo.ResourceClaims(ResourceName, ClaimName, ParentResourceClaimId)
+ VALUES ('assesssmentAdministrationParticipation', 'http://ed-fi.org/ods/identity/claims/assesssmentAdministrationParticipation', @parentResourceClaimId)
+
+ SET @claimId = SCOPE_IDENTITY()
+ END
+ ELSE
+ BEGIN
+ IF @parentResourceClaimId != @existingParentResourceClaimId OR (@parentResourceClaimId IS NULL AND @existingParentResourceClaimId IS NOT NULL) OR (@parentResourceClaimId IS NOT NULL AND @existingParentResourceClaimId IS NULL)
+ BEGIN
+ PRINT 'Repointing claim ''' + @claimName + ''' (ResourceClaimId=' + CONVERT(nvarchar, @claimId) + ') to new parent (ResourceClaimId=' + CONVERT(nvarchar, @parentResourceClaimId) + ')'
+
+ UPDATE dbo.ResourceClaims
+ SET ParentResourceClaimId = @parentResourceClaimId
+ WHERE ResourceClaimId = @claimId
+ END
+ END
+
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Resource Claim: 'http://ed-fi.org/ods/identity/claims/assesssmentAdministrationParticipationAdministrationPointOfContact'
+ ----------------------------------------------------------------------------------------------------------------------------
+ SET @claimName = 'http://ed-fi.org/ods/identity/claims/assesssmentAdministrationParticipationAdministrationPointOfContact'
+ SET @claimId = NULL
+
+ SELECT @claimId = ResourceClaimId, @existingParentResourceClaimId = ParentResourceClaimId
+ FROM dbo.ResourceClaims
+ WHERE ClaimName = @claimName
+
+ SELECT @parentResourceClaimId = ResourceClaimId
+ FROM @claimIdStack
+ WHERE Id = (SELECT Max(Id) FROM @claimIdStack)
+
+ IF @claimId IS NULL
+ BEGIN
+ PRINT 'Creating new claim: ' + @claimName
+
+ INSERT INTO dbo.ResourceClaims(ResourceName, ClaimName, ParentResourceClaimId)
+ VALUES ('assesssmentAdministrationParticipationAdministrationPointOfContact', 'http://ed-fi.org/ods/identity/claims/assesssmentAdministrationParticipationAdministrationPointOfContact', @parentResourceClaimId)
+
+ SET @claimId = SCOPE_IDENTITY()
+ END
+ ELSE
+ BEGIN
+ IF @parentResourceClaimId != @existingParentResourceClaimId OR (@parentResourceClaimId IS NULL AND @existingParentResourceClaimId IS NOT NULL) OR (@parentResourceClaimId IS NOT NULL AND @existingParentResourceClaimId IS NULL)
+ BEGIN
+ PRINT 'Repointing claim ''' + @claimName + ''' (ResourceClaimId=' + CONVERT(nvarchar, @claimId) + ') to new parent (ResourceClaimId=' + CONVERT(nvarchar, @parentResourceClaimId) + ')'
+
+ UPDATE dbo.ResourceClaims
+ SET ParentResourceClaimId = @parentResourceClaimId
+ WHERE ResourceClaimId = @claimId
+ END
+ END
+
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Resource Claim: 'http://ed-fi.org/ods/identity/claims/studentAssessmentRegistration'
+ ----------------------------------------------------------------------------------------------------------------------------
+ SET @claimName = 'http://ed-fi.org/ods/identity/claims/studentAssessmentRegistration'
+ SET @claimId = NULL
+
+ SELECT @claimId = ResourceClaimId, @existingParentResourceClaimId = ParentResourceClaimId
+ FROM dbo.ResourceClaims
+ WHERE ClaimName = @claimName
+
+ SELECT @parentResourceClaimId = ResourceClaimId
+ FROM @claimIdStack
+ WHERE Id = (SELECT Max(Id) FROM @claimIdStack)
+
+ IF @claimId IS NULL
+ BEGIN
+ PRINT 'Creating new claim: ' + @claimName
+
+ INSERT INTO dbo.ResourceClaims(ResourceName, ClaimName, ParentResourceClaimId)
+ VALUES ('studentAssessmentRegistration', 'http://ed-fi.org/ods/identity/claims/studentAssessmentRegistration', @parentResourceClaimId)
+
+ SET @claimId = SCOPE_IDENTITY()
+ END
+ ELSE
+ BEGIN
+ IF @parentResourceClaimId != @existingParentResourceClaimId OR (@parentResourceClaimId IS NULL AND @existingParentResourceClaimId IS NOT NULL) OR (@parentResourceClaimId IS NOT NULL AND @existingParentResourceClaimId IS NULL)
+ BEGIN
+ PRINT 'Repointing claim ''' + @claimName + ''' (ResourceClaimId=' + CONVERT(nvarchar, @claimId) + ') to new parent (ResourceClaimId=' + CONVERT(nvarchar, @parentResourceClaimId) + ')'
+
+ UPDATE dbo.ResourceClaims
+ SET ParentResourceClaimId = @parentResourceClaimId
+ WHERE ResourceClaimId = @claimId
+ END
+ END
+
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Resource Claim: 'http://ed-fi.org/ods/identity/claims/studentAssessmentRegistrationAssessmentAccommodation'
+ ----------------------------------------------------------------------------------------------------------------------------
+ SET @claimName = 'http://ed-fi.org/ods/identity/claims/studentAssessmentRegistrationAssessmentAccommodation'
+ SET @claimId = NULL
+
+ SELECT @claimId = ResourceClaimId, @existingParentResourceClaimId = ParentResourceClaimId
+ FROM dbo.ResourceClaims
+ WHERE ClaimName = @claimName
+
+ SELECT @parentResourceClaimId = ResourceClaimId
+ FROM @claimIdStack
+ WHERE Id = (SELECT Max(Id) FROM @claimIdStack)
+
+ IF @claimId IS NULL
+ BEGIN
+ PRINT 'Creating new claim: ' + @claimName
+
+ INSERT INTO dbo.ResourceClaims(ResourceName, ClaimName, ParentResourceClaimId)
+ VALUES ('studentAssessmentRegistrationAssessmentAccommodation', 'http://ed-fi.org/ods/identity/claims/studentAssessmentRegistrationAssessmentAccommodation', @parentResourceClaimId)
+
+ SET @claimId = SCOPE_IDENTITY()
+ END
+ ELSE
+ BEGIN
+ IF @parentResourceClaimId != @existingParentResourceClaimId OR (@parentResourceClaimId IS NULL AND @existingParentResourceClaimId IS NOT NULL) OR (@parentResourceClaimId IS NOT NULL AND @existingParentResourceClaimId IS NULL)
+ BEGIN
+ PRINT 'Repointing claim ''' + @claimName + ''' (ResourceClaimId=' + CONVERT(nvarchar, @claimId) + ') to new parent (ResourceClaimId=' + CONVERT(nvarchar, @parentResourceClaimId) + ')'
+
+ UPDATE dbo.ResourceClaims
+ SET ParentResourceClaimId = @parentResourceClaimId
+ WHERE ResourceClaimId = @claimId
+ END
+ END
+
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Resource Claim: 'http://ed-fi.org/ods/identity/claims/studentAssessmentRegistrationAssessmentCustomization'
+ ----------------------------------------------------------------------------------------------------------------------------
+ SET @claimName = 'http://ed-fi.org/ods/identity/claims/studentAssessmentRegistrationAssessmentCustomization'
+ SET @claimId = NULL
+
+ SELECT @claimId = ResourceClaimId, @existingParentResourceClaimId = ParentResourceClaimId
+ FROM dbo.ResourceClaims
+ WHERE ClaimName = @claimName
+
+ SELECT @parentResourceClaimId = ResourceClaimId
+ FROM @claimIdStack
+ WHERE Id = (SELECT Max(Id) FROM @claimIdStack)
+
+ IF @claimId IS NULL
+ BEGIN
+ PRINT 'Creating new claim: ' + @claimName
+
+ INSERT INTO dbo.ResourceClaims(ResourceName, ClaimName, ParentResourceClaimId)
+ VALUES ('studentAssessmentRegistrationAssessmentCustomization', 'http://ed-fi.org/ods/identity/claims/studentAssessmentRegistrationAssessmentCustomization', @parentResourceClaimId)
+
+ SET @claimId = SCOPE_IDENTITY()
+ END
+ ELSE
+ BEGIN
+ IF @parentResourceClaimId != @existingParentResourceClaimId OR (@parentResourceClaimId IS NULL AND @existingParentResourceClaimId IS NOT NULL) OR (@parentResourceClaimId IS NOT NULL AND @existingParentResourceClaimId IS NULL)
+ BEGIN
+ PRINT 'Repointing claim ''' + @claimName + ''' (ResourceClaimId=' + CONVERT(nvarchar, @claimId) + ') to new parent (ResourceClaimId=' + CONVERT(nvarchar, @parentResourceClaimId) + ')'
+
+ UPDATE dbo.ResourceClaims
+ SET ParentResourceClaimId = @parentResourceClaimId
+ WHERE ResourceClaimId = @claimId
+ END
+ END
+
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Resource Claim: 'http://ed-fi.org/ods/identity/claims/studentAssessmentRegistrationBatteryPartAssociation'
+ ----------------------------------------------------------------------------------------------------------------------------
+ SET @claimName = 'http://ed-fi.org/ods/identity/claims/studentAssessmentRegistrationBatteryPartAssociation'
+ SET @claimId = NULL
+
+ SELECT @claimId = ResourceClaimId, @existingParentResourceClaimId = ParentResourceClaimId
+ FROM dbo.ResourceClaims
+ WHERE ClaimName = @claimName
+
+ SELECT @parentResourceClaimId = ResourceClaimId
+ FROM @claimIdStack
+ WHERE Id = (SELECT Max(Id) FROM @claimIdStack)
+
+ IF @claimId IS NULL
+ BEGIN
+ PRINT 'Creating new claim: ' + @claimName
+
+ INSERT INTO dbo.ResourceClaims(ResourceName, ClaimName, ParentResourceClaimId)
+ VALUES ('studentAssessmentRegistrationBatteryPartAssociation', 'http://ed-fi.org/ods/identity/claims/studentAssessmentRegistrationBatteryPartAssociation', @parentResourceClaimId)
+
+ SET @claimId = SCOPE_IDENTITY()
+ END
+ ELSE
+ BEGIN
+ IF @parentResourceClaimId != @existingParentResourceClaimId OR (@parentResourceClaimId IS NULL AND @existingParentResourceClaimId IS NOT NULL) OR (@parentResourceClaimId IS NOT NULL AND @existingParentResourceClaimId IS NULL)
+ BEGIN
+ PRINT 'Repointing claim ''' + @claimName + ''' (ResourceClaimId=' + CONVERT(nvarchar, @claimId) + ') to new parent (ResourceClaimId=' + CONVERT(nvarchar, @parentResourceClaimId) + ')'
+
+ UPDATE dbo.ResourceClaims
+ SET ParentResourceClaimId = @parentResourceClaimId
+ WHERE ResourceClaimId = @claimId
+ END
+ END
+
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Resource Claim: 'http://ed-fi.org/ods/identity/claims/studentAssessmentRegistrationBatteryPartAssociationAccommodation'
+ ----------------------------------------------------------------------------------------------------------------------------
+ SET @claimName = 'http://ed-fi.org/ods/identity/claims/studentAssessmentRegistrationBatteryPartAssociationAccommodation'
+ SET @claimId = NULL
+
+ SELECT @claimId = ResourceClaimId, @existingParentResourceClaimId = ParentResourceClaimId
+ FROM dbo.ResourceClaims
+ WHERE ClaimName = @claimName
+
+ SELECT @parentResourceClaimId = ResourceClaimId
+ FROM @claimIdStack
+ WHERE Id = (SELECT Max(Id) FROM @claimIdStack)
+
+ IF @claimId IS NULL
+ BEGIN
+ PRINT 'Creating new claim: ' + @claimName
+
+ INSERT INTO dbo.ResourceClaims(ResourceName, ClaimName, ParentResourceClaimId)
+ VALUES ('studentAssessmentRegistrationBatteryPartAssociationAccommodation', 'http://ed-fi.org/ods/identity/claims/studentAssessmentRegistrationBatteryPartAssociationAccommodation', @parentResourceClaimId)
+
+ SET @claimId = SCOPE_IDENTITY()
+ END
+ ELSE
+ BEGIN
+ IF @parentResourceClaimId != @existingParentResourceClaimId OR (@parentResourceClaimId IS NULL AND @existingParentResourceClaimId IS NOT NULL) OR (@parentResourceClaimId IS NOT NULL AND @existingParentResourceClaimId IS NULL)
+ BEGIN
+ PRINT 'Repointing claim ''' + @claimName + ''' (ResourceClaimId=' + CONVERT(nvarchar, @claimId) + ') to new parent (ResourceClaimId=' + CONVERT(nvarchar, @parentResourceClaimId) + ')'
+
+ UPDATE dbo.ResourceClaims
+ SET ParentResourceClaimId = @parentResourceClaimId
+ WHERE ResourceClaimId = @claimId
+ END
+ END
+
+
+ -- Pop the stack
+ DELETE FROM @claimIdStack WHERE Id = (SELECT Max(Id) FROM @claimIdStack)
+
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Resource Claim: 'http://ed-fi.org/ods/identity/claims/domains/systemDescriptors'
+ ----------------------------------------------------------------------------------------------------------------------------
+ SET @claimName = 'http://ed-fi.org/ods/identity/claims/domains/systemDescriptors'
+ SET @claimId = NULL
+
+ SELECT @claimId = ResourceClaimId, @existingParentResourceClaimId = ParentResourceClaimId
+ FROM dbo.ResourceClaims
+ WHERE ClaimName = @claimName
+
+ SELECT @parentResourceClaimId = ResourceClaimId
+ FROM @claimIdStack
+ WHERE Id = (SELECT Max(Id) FROM @claimIdStack)
+
+ IF @claimId IS NULL
+ BEGIN
+ PRINT 'Creating new claim: ' + @claimName
+
+ INSERT INTO dbo.ResourceClaims(ResourceName, ClaimName, ParentResourceClaimId)
+ VALUES ('systemDescriptors', 'http://ed-fi.org/ods/identity/claims/domains/systemDescriptors', @parentResourceClaimId)
+
+ SET @claimId = SCOPE_IDENTITY()
+ END
+ ELSE
+ BEGIN
+ IF @parentResourceClaimId != @existingParentResourceClaimId OR (@parentResourceClaimId IS NULL AND @existingParentResourceClaimId IS NOT NULL) OR (@parentResourceClaimId IS NOT NULL AND @existingParentResourceClaimId IS NULL)
+ BEGIN
+ PRINT 'Repointing claim ''' + @claimName + ''' (ResourceClaimId=' + CONVERT(nvarchar, @claimId) + ') to new parent (ResourceClaimId=' + CONVERT(nvarchar, @parentResourceClaimId) + ')'
+
+ UPDATE dbo.ResourceClaims
+ SET ParentResourceClaimId = @parentResourceClaimId
+ WHERE ResourceClaimId = @claimId
+ END
+ END
+
+ -- Setting default authorization metadata
+ PRINT 'Deleting default action authorizations for resource claim ''' + @claimName + ''' (claimId=' + CONVERT(nvarchar, @claimId) + ').'
+
+ DELETE FROM dbo.ResourceClaimActionAuthorizationStrategies
+ WHERE ResourceClaimActionId IN (SELECT ResourceClaimActionId FROM dbo.ResourceClaimActions WHERE ResourceClaimId = @claimId);
+
+ DELETE FROM dbo.ResourceClaimActions
+ WHERE ResourceClaimId = @claimId
+
+ -- Default Create authorization
+ PRINT 'Creating action ''Create'' for resource claim ''' + @claimName + ''' (claimId=' + CONVERT(nvarchar, @claimId) + ').'
+ INSERT INTO dbo.ResourceClaimActions(ResourceClaimId, ActionId)
+ VALUES (@claimId, @CreateActionId)
+
+ SET @resourceClaimActionId = SCOPE_IDENTITY()
+
+
+ SET @authorizationStrategyId = NULL
+
+ SELECT @authorizationStrategyId = a.AuthorizationStrategyId
+ FROM dbo.AuthorizationStrategies a
+ WHERE a.AuthorizationStrategyName = 'NamespaceBased'
+
+ IF @authorizationStrategyId IS NULL
+ BEGIN
+ SET @msg = 'AuthorizationStrategy does not exist: ''NamespaceBased''';
+ THROW 50000, @msg, 1
+ END
+
+ PRINT 'Adding authorization strategy ''NamespaceBased'' for resource claim ''' + @claimName + ''' (claimId=' + CONVERT(nvarchar, @claimId) + ').'
+ INSERT INTO dbo.ResourceClaimActionAuthorizationStrategies(ResourceClaimActionId, AuthorizationStrategyId)
+ VALUES (@resourceClaimActionId, @authorizationStrategyId)
+
+
+ -- Default Read authorization
+ PRINT 'Creating action ''Read'' for resource claim ''' + @claimName + ''' (claimId=' + CONVERT(nvarchar, @claimId) + ').'
+ INSERT INTO dbo.ResourceClaimActions(ResourceClaimId, ActionId)
+ VALUES (@claimId, @ReadActionId)
+
+ SET @resourceClaimActionId = SCOPE_IDENTITY()
+
+
+ SET @authorizationStrategyId = NULL
+
+ SELECT @authorizationStrategyId = a.AuthorizationStrategyId
+ FROM dbo.AuthorizationStrategies a
+ WHERE a.AuthorizationStrategyName = 'NoFurtherAuthorizationRequired'
+
+ IF @authorizationStrategyId IS NULL
+ BEGIN
+ SET @msg = 'AuthorizationStrategy does not exist: ''NoFurtherAuthorizationRequired''';
+ THROW 50000, @msg, 1
+ END
+
+ PRINT 'Adding authorization strategy ''NoFurtherAuthorizationRequired'' for resource claim ''' + @claimName + ''' (claimId=' + CONVERT(nvarchar, @claimId) + ').'
+ INSERT INTO dbo.ResourceClaimActionAuthorizationStrategies(ResourceClaimActionId, AuthorizationStrategyId)
+ VALUES (@resourceClaimActionId, @authorizationStrategyId)
+
+
+ -- Default Update authorization
+ PRINT 'Creating action ''Update'' for resource claim ''' + @claimName + ''' (claimId=' + CONVERT(nvarchar, @claimId) + ').'
+ INSERT INTO dbo.ResourceClaimActions(ResourceClaimId, ActionId)
+ VALUES (@claimId, @UpdateActionId)
+
+ SET @resourceClaimActionId = SCOPE_IDENTITY()
+
+
+ SET @authorizationStrategyId = NULL
+
+ SELECT @authorizationStrategyId = a.AuthorizationStrategyId
+ FROM dbo.AuthorizationStrategies a
+ WHERE a.AuthorizationStrategyName = 'NamespaceBased'
+
+ IF @authorizationStrategyId IS NULL
+ BEGIN
+ SET @msg = 'AuthorizationStrategy does not exist: ''NamespaceBased''';
+ THROW 50000, @msg, 1
+ END
+
+ PRINT 'Adding authorization strategy ''NamespaceBased'' for resource claim ''' + @claimName + ''' (claimId=' + CONVERT(nvarchar, @claimId) + ').'
+ INSERT INTO dbo.ResourceClaimActionAuthorizationStrategies(ResourceClaimActionId, AuthorizationStrategyId)
+ VALUES (@resourceClaimActionId, @authorizationStrategyId)
+
+
+ -- Default Delete authorization
+ PRINT 'Creating action ''Delete'' for resource claim ''' + @claimName + ''' (claimId=' + CONVERT(nvarchar, @claimId) + ').'
+ INSERT INTO dbo.ResourceClaimActions(ResourceClaimId, ActionId)
+ VALUES (@claimId, @DeleteActionId)
+
+ SET @resourceClaimActionId = SCOPE_IDENTITY()
+
+
+ SET @authorizationStrategyId = NULL
+
+ SELECT @authorizationStrategyId = a.AuthorizationStrategyId
+ FROM dbo.AuthorizationStrategies a
+ WHERE a.AuthorizationStrategyName = 'NamespaceBased'
+
+ IF @authorizationStrategyId IS NULL
+ BEGIN
+ SET @msg = 'AuthorizationStrategy does not exist: ''NamespaceBased''';
+ THROW 50000, @msg, 1
+ END
+
+ PRINT 'Adding authorization strategy ''NamespaceBased'' for resource claim ''' + @claimName + ''' (claimId=' + CONVERT(nvarchar, @claimId) + ').'
+ INSERT INTO dbo.ResourceClaimActionAuthorizationStrategies(ResourceClaimActionId, AuthorizationStrategyId)
+ VALUES (@resourceClaimActionId, @authorizationStrategyId)
+
+
+ -- Processing claim sets for http://ed-fi.org/ods/identity/claims/domains/systemDescriptors
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Claim set: 'SIS Vendor'
+ ----------------------------------------------------------------------------------------------------------------------------
+ SET @claimSetName = 'SIS Vendor'
+ SET @claimSetId = NULL
+
+ SELECT @claimSetId = ClaimSetId
+ FROM dbo.ClaimSets
+ WHERE ClaimSetName = @claimSetName
+
+ IF @claimSetId IS NULL
+ BEGIN
+ PRINT 'Creating new claim set: ' + @claimSetName
+
+ INSERT INTO dbo.ClaimSets(ClaimSetName)
+ VALUES (@claimSetName)
+
+ SET @claimSetId = SCOPE_IDENTITY()
+ END
+
+ PRINT 'Deleting existing actions for claim set ''' + @claimSetName + ''' (claimSetId=' + CONVERT(nvarchar, @claimSetId) + ') on resource claim ''' + @claimName + '''.'
+
+ DELETE FROM dbo.ClaimSetResourceClaimActionAuthorizationStrategyOverrides
+ WHERE ClaimSetResourceClaimActionId IN (SELECT ClaimSetResourceClaimActionId FROM dbo.ClaimSetResourceClaimActions WHERE ClaimSetId = @claimSetId AND ResourceClaimId = @claimId)
+
+ DELETE FROM dbo.ClaimSetResourceClaimActions
+ WHERE ClaimSetId = @claimSetId AND ResourceClaimId = @claimId
+
+
+ -- Claim set-specific Read authorization
+ PRINT 'Creating ''Read'' action for claim set ''' + @claimSetName + ''' (claimSetId=' + CONVERT(nvarchar, @claimSetId) + ', actionId = ' + CONVERT(nvarchar, @ReadActionId) + ').'
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (@claimId, @claimSetId, @ReadActionId) -- Read
+
+ SET @claimSetResourceClaimActionId = SCOPE_IDENTITY()
+
+
+
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Claim set: 'Ed-Fi Sandbox'
+ ----------------------------------------------------------------------------------------------------------------------------
+ SET @claimSetName = 'Ed-Fi Sandbox'
+ SET @claimSetId = NULL
+
+ SELECT @claimSetId = ClaimSetId
+ FROM dbo.ClaimSets
+ WHERE ClaimSetName = @claimSetName
+
+ IF @claimSetId IS NULL
+ BEGIN
+ PRINT 'Creating new claim set: ' + @claimSetName
+
+ INSERT INTO dbo.ClaimSets(ClaimSetName)
+ VALUES (@claimSetName)
+
+ SET @claimSetId = SCOPE_IDENTITY()
+ END
+
+ PRINT 'Deleting existing actions for claim set ''' + @claimSetName + ''' (claimSetId=' + CONVERT(nvarchar, @claimSetId) + ') on resource claim ''' + @claimName + '''.'
+
+ DELETE FROM dbo.ClaimSetResourceClaimActionAuthorizationStrategyOverrides
+ WHERE ClaimSetResourceClaimActionId IN (SELECT ClaimSetResourceClaimActionId FROM dbo.ClaimSetResourceClaimActions WHERE ClaimSetId = @claimSetId AND ResourceClaimId = @claimId)
+
+ DELETE FROM dbo.ClaimSetResourceClaimActions
+ WHERE ClaimSetId = @claimSetId AND ResourceClaimId = @claimId
+
+
+ -- Claim set-specific Create authorization
+ PRINT 'Creating ''Create'' action for claim set ''' + @claimSetName + ''' (claimSetId=' + CONVERT(nvarchar, @claimSetId) + ', actionId = ' + CONVERT(nvarchar, @CreateActionId) + ').'
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (@claimId, @claimSetId, @CreateActionId) -- Create
+
+ SET @claimSetResourceClaimActionId = SCOPE_IDENTITY()
+
+
+
+
+ -- Claim set-specific Read authorization
+ PRINT 'Creating ''Read'' action for claim set ''' + @claimSetName + ''' (claimSetId=' + CONVERT(nvarchar, @claimSetId) + ', actionId = ' + CONVERT(nvarchar, @ReadActionId) + ').'
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (@claimId, @claimSetId, @ReadActionId) -- Read
+
+ SET @claimSetResourceClaimActionId = SCOPE_IDENTITY()
+
+
+
+
+ -- Claim set-specific Update authorization
+ PRINT 'Creating ''Update'' action for claim set ''' + @claimSetName + ''' (claimSetId=' + CONVERT(nvarchar, @claimSetId) + ', actionId = ' + CONVERT(nvarchar, @UpdateActionId) + ').'
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (@claimId, @claimSetId, @UpdateActionId) -- Update
+
+ SET @claimSetResourceClaimActionId = SCOPE_IDENTITY()
+
+
+
+
+ -- Claim set-specific Delete authorization
+ PRINT 'Creating ''Delete'' action for claim set ''' + @claimSetName + ''' (claimSetId=' + CONVERT(nvarchar, @claimSetId) + ', actionId = ' + CONVERT(nvarchar, @DeleteActionId) + ').'
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (@claimId, @claimSetId, @DeleteActionId) -- Delete
+
+ SET @claimSetResourceClaimActionId = SCOPE_IDENTITY()
+
+
+
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Claim set: 'Assessment Vendor'
+ ----------------------------------------------------------------------------------------------------------------------------
+ SET @claimSetName = 'Assessment Vendor'
+ SET @claimSetId = NULL
+
+ SELECT @claimSetId = ClaimSetId
+ FROM dbo.ClaimSets
+ WHERE ClaimSetName = @claimSetName
+
+ IF @claimSetId IS NULL
+ BEGIN
+ PRINT 'Creating new claim set: ' + @claimSetName
+
+ INSERT INTO dbo.ClaimSets(ClaimSetName)
+ VALUES (@claimSetName)
+
+ SET @claimSetId = SCOPE_IDENTITY()
+ END
+
+ PRINT 'Deleting existing actions for claim set ''' + @claimSetName + ''' (claimSetId=' + CONVERT(nvarchar, @claimSetId) + ') on resource claim ''' + @claimName + '''.'
+
+ DELETE FROM dbo.ClaimSetResourceClaimActionAuthorizationStrategyOverrides
+ WHERE ClaimSetResourceClaimActionId IN (SELECT ClaimSetResourceClaimActionId FROM dbo.ClaimSetResourceClaimActions WHERE ClaimSetId = @claimSetId AND ResourceClaimId = @claimId)
+
+ DELETE FROM dbo.ClaimSetResourceClaimActions
+ WHERE ClaimSetId = @claimSetId AND ResourceClaimId = @claimId
+
+
+ -- Claim set-specific Read authorization
+ PRINT 'Creating ''Read'' action for claim set ''' + @claimSetName + ''' (claimSetId=' + CONVERT(nvarchar, @claimSetId) + ', actionId = ' + CONVERT(nvarchar, @ReadActionId) + ').'
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (@claimId, @claimSetId, @ReadActionId) -- Read
+
+ SET @claimSetResourceClaimActionId = SCOPE_IDENTITY()
+
+
+
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Claim set: 'Bootstrap Descriptors and EdOrgs'
+ ----------------------------------------------------------------------------------------------------------------------------
+ SET @claimSetName = 'Bootstrap Descriptors and EdOrgs'
+ SET @claimSetId = NULL
+
+ SELECT @claimSetId = ClaimSetId
+ FROM dbo.ClaimSets
+ WHERE ClaimSetName = @claimSetName
+
+ IF @claimSetId IS NULL
+ BEGIN
+ PRINT 'Creating new claim set: ' + @claimSetName
+
+ INSERT INTO dbo.ClaimSets(ClaimSetName)
+ VALUES (@claimSetName)
+
+ SET @claimSetId = SCOPE_IDENTITY()
+ END
+
+ PRINT 'Deleting existing actions for claim set ''' + @claimSetName + ''' (claimSetId=' + CONVERT(nvarchar, @claimSetId) + ') on resource claim ''' + @claimName + '''.'
+
+ DELETE FROM dbo.ClaimSetResourceClaimActionAuthorizationStrategyOverrides
+ WHERE ClaimSetResourceClaimActionId IN (SELECT ClaimSetResourceClaimActionId FROM dbo.ClaimSetResourceClaimActions WHERE ClaimSetId = @claimSetId AND ResourceClaimId = @claimId)
+
+ DELETE FROM dbo.ClaimSetResourceClaimActions
+ WHERE ClaimSetId = @claimSetId AND ResourceClaimId = @claimId
+
+
+ -- Claim set-specific Create authorization
+ PRINT 'Creating ''Create'' action for claim set ''' + @claimSetName + ''' (claimSetId=' + CONVERT(nvarchar, @claimSetId) + ', actionId = ' + CONVERT(nvarchar, @CreateActionId) + ').'
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (@claimId, @claimSetId, @CreateActionId) -- Create
+
+ SET @claimSetResourceClaimActionId = SCOPE_IDENTITY()
+
+
+
+ SET @authorizationStrategyId = NULL
+
+ SELECT @authorizationStrategyId = a.AuthorizationStrategyId
+ FROM dbo.AuthorizationStrategies a
+ WHERE a.AuthorizationStrategyName = 'NoFurtherAuthorizationRequired'
+
+ IF @authorizationStrategyId IS NULL
+ BEGIN
+ SET @msg = 'AuthorizationStrategy does not exist: ''NoFurtherAuthorizationRequired''';
+ THROW 50000, @msg, 1
+ END
+
+ PRINT 'Creating authorization strategy override entry of ''NoFurtherAuthorizationRequired''' + '(authorizationStrategyId = ' + CONVERT(nvarchar, @authorizationStrategyId) + ' for ''Create'' action for claim set ''' + @claimSetName + ''' (claimSetId=' + CONVERT(nvarchar, @claimSetId) + ', actionId = ' + CONVERT(nvarchar, @CreateActionId) + ').'
+
+ INSERT INTO dbo.ClaimSetResourceClaimActionAuthorizationStrategyOverrides(ClaimSetResourceClaimActionId, AuthorizationStrategyId)
+ VALUES (@claimSetResourceClaimActionId, @authorizationStrategyId)
+
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Claim set: 'District Hosted SIS Vendor'
+ ----------------------------------------------------------------------------------------------------------------------------
+ SET @claimSetName = 'District Hosted SIS Vendor'
+ SET @claimSetId = NULL
+
+ SELECT @claimSetId = ClaimSetId
+ FROM dbo.ClaimSets
+ WHERE ClaimSetName = @claimSetName
+
+ IF @claimSetId IS NULL
+ BEGIN
+ PRINT 'Creating new claim set: ' + @claimSetName
+
+ INSERT INTO dbo.ClaimSets(ClaimSetName)
+ VALUES (@claimSetName)
+
+ SET @claimSetId = SCOPE_IDENTITY()
+ END
+
+ PRINT 'Deleting existing actions for claim set ''' + @claimSetName + ''' (claimSetId=' + CONVERT(nvarchar, @claimSetId) + ') on resource claim ''' + @claimName + '''.'
+
+ DELETE FROM dbo.ClaimSetResourceClaimActionAuthorizationStrategyOverrides
+ WHERE ClaimSetResourceClaimActionId IN (SELECT ClaimSetResourceClaimActionId FROM dbo.ClaimSetResourceClaimActions WHERE ClaimSetId = @claimSetId AND ResourceClaimId = @claimId)
+
+ DELETE FROM dbo.ClaimSetResourceClaimActions
+ WHERE ClaimSetId = @claimSetId AND ResourceClaimId = @claimId
+
+
+ -- Claim set-specific Read authorization
+ PRINT 'Creating ''Read'' action for claim set ''' + @claimSetName + ''' (claimSetId=' + CONVERT(nvarchar, @claimSetId) + ', actionId = ' + CONVERT(nvarchar, @ReadActionId) + ').'
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (@claimId, @claimSetId, @ReadActionId) -- Read
+
+ SET @claimSetResourceClaimActionId = SCOPE_IDENTITY()
+
+
+
+ -- Push claimId to the stack
+ INSERT INTO @claimIdStack (ResourceClaimId) VALUES (@claimId)
+
+ -- Processing children of http://ed-fi.org/ods/identity/claims/domains/systemDescriptors
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Resource Claim: 'http://ed-fi.org/ods/identity/claims/Section504DisabilityTypeDescriptor'
+ ----------------------------------------------------------------------------------------------------------------------------
+ SET @claimName = 'http://ed-fi.org/ods/identity/claims/Section504DisabilityTypeDescriptor'
+ SET @claimId = NULL
+
+ SELECT @claimId = ResourceClaimId, @existingParentResourceClaimId = ParentResourceClaimId
+ FROM dbo.ResourceClaims
+ WHERE ClaimName = @claimName
+
+ SELECT @parentResourceClaimId = ResourceClaimId
+ FROM @claimIdStack
+ WHERE Id = (SELECT Max(Id) FROM @claimIdStack)
+
+ IF @claimId IS NULL
+ BEGIN
+ PRINT 'Creating new claim: ' + @claimName
+
+ INSERT INTO dbo.ResourceClaims(ResourceName, ClaimName, ParentResourceClaimId)
+ VALUES ('Section504DisabilityTypeDescriptor', 'http://ed-fi.org/ods/identity/claims/Section504DisabilityTypeDescriptor', @parentResourceClaimId)
+
+ SET @claimId = SCOPE_IDENTITY()
+ END
+ ELSE
+ BEGIN
+ IF @parentResourceClaimId != @existingParentResourceClaimId OR (@parentResourceClaimId IS NULL AND @existingParentResourceClaimId IS NOT NULL) OR (@parentResourceClaimId IS NOT NULL AND @existingParentResourceClaimId IS NULL)
+ BEGIN
+ PRINT 'Repointing claim ''' + @claimName + ''' (ResourceClaimId=' + CONVERT(nvarchar, @claimId) + ') to new parent (ResourceClaimId=' + CONVERT(nvarchar, @parentResourceClaimId) + ')'
+
+ UPDATE dbo.ResourceClaims
+ SET ParentResourceClaimId = @parentResourceClaimId
+ WHERE ResourceClaimId = @claimId
+ END
+ END
+
+
+ -- Pop the stack
+ DELETE FROM @claimIdStack WHERE Id = (SELECT Max(Id) FROM @claimIdStack)
+
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Resource Claim: 'http://ed-fi.org/ods/identity/claims/domains/relationshipBasedData'
+ ----------------------------------------------------------------------------------------------------------------------------
+ SET @claimName = 'http://ed-fi.org/ods/identity/claims/domains/relationshipBasedData'
+ SET @claimId = NULL
+
+ SELECT @claimId = ResourceClaimId, @existingParentResourceClaimId = ParentResourceClaimId
+ FROM dbo.ResourceClaims
+ WHERE ClaimName = @claimName
+
+ SELECT @parentResourceClaimId = ResourceClaimId
+ FROM @claimIdStack
+ WHERE Id = (SELECT Max(Id) FROM @claimIdStack)
+
+ IF @claimId IS NULL
+ BEGIN
+ PRINT 'Creating new claim: ' + @claimName
+
+ INSERT INTO dbo.ResourceClaims(ResourceName, ClaimName, ParentResourceClaimId)
+ VALUES ('relationshipBasedData', 'http://ed-fi.org/ods/identity/claims/domains/relationshipBasedData', @parentResourceClaimId)
+
+ SET @claimId = SCOPE_IDENTITY()
+ END
+ ELSE
+ BEGIN
+ IF @parentResourceClaimId != @existingParentResourceClaimId OR (@parentResourceClaimId IS NULL AND @existingParentResourceClaimId IS NOT NULL) OR (@parentResourceClaimId IS NOT NULL AND @existingParentResourceClaimId IS NULL)
+ BEGIN
+ PRINT 'Repointing claim ''' + @claimName + ''' (ResourceClaimId=' + CONVERT(nvarchar, @claimId) + ') to new parent (ResourceClaimId=' + CONVERT(nvarchar, @parentResourceClaimId) + ')'
+
+ UPDATE dbo.ResourceClaims
+ SET ParentResourceClaimId = @parentResourceClaimId
+ WHERE ResourceClaimId = @claimId
+ END
+ END
+
+ -- Setting default authorization metadata
+ PRINT 'Deleting default action authorizations for resource claim ''' + @claimName + ''' (claimId=' + CONVERT(nvarchar, @claimId) + ').'
+
+ DELETE FROM dbo.ResourceClaimActionAuthorizationStrategies
+ WHERE ResourceClaimActionId IN (SELECT ResourceClaimActionId FROM dbo.ResourceClaimActions WHERE ResourceClaimId = @claimId);
+
+ DELETE FROM dbo.ResourceClaimActions
+ WHERE ResourceClaimId = @claimId
+
+ -- Default Create authorization
+ PRINT 'Creating action ''Create'' for resource claim ''' + @claimName + ''' (claimId=' + CONVERT(nvarchar, @claimId) + ').'
+ INSERT INTO dbo.ResourceClaimActions(ResourceClaimId, ActionId)
+ VALUES (@claimId, @CreateActionId)
+
+ SET @resourceClaimActionId = SCOPE_IDENTITY()
+
+
+ SET @authorizationStrategyId = NULL
+
+ SELECT @authorizationStrategyId = a.AuthorizationStrategyId
+ FROM dbo.AuthorizationStrategies a
+ WHERE a.AuthorizationStrategyName = 'RelationshipsWithEdOrgsAndPeople'
+
+ IF @authorizationStrategyId IS NULL
+ BEGIN
+ SET @msg = 'AuthorizationStrategy does not exist: ''RelationshipsWithEdOrgsAndPeople''';
+ THROW 50000, @msg, 1
+ END
+
+ PRINT 'Adding authorization strategy ''RelationshipsWithEdOrgsAndPeople'' for resource claim ''' + @claimName + ''' (claimId=' + CONVERT(nvarchar, @claimId) + ').'
+ INSERT INTO dbo.ResourceClaimActionAuthorizationStrategies(ResourceClaimActionId, AuthorizationStrategyId)
+ VALUES (@resourceClaimActionId, @authorizationStrategyId)
+
+
+ -- Default Read authorization
+ PRINT 'Creating action ''Read'' for resource claim ''' + @claimName + ''' (claimId=' + CONVERT(nvarchar, @claimId) + ').'
+ INSERT INTO dbo.ResourceClaimActions(ResourceClaimId, ActionId)
+ VALUES (@claimId, @ReadActionId)
+
+ SET @resourceClaimActionId = SCOPE_IDENTITY()
+
+
+ SET @authorizationStrategyId = NULL
+
+ SELECT @authorizationStrategyId = a.AuthorizationStrategyId
+ FROM dbo.AuthorizationStrategies a
+ WHERE a.AuthorizationStrategyName = 'RelationshipsWithEdOrgsAndPeople'
+
+ IF @authorizationStrategyId IS NULL
+ BEGIN
+ SET @msg = 'AuthorizationStrategy does not exist: ''RelationshipsWithEdOrgsAndPeople''';
+ THROW 50000, @msg, 1
+ END
+
+ PRINT 'Adding authorization strategy ''RelationshipsWithEdOrgsAndPeople'' for resource claim ''' + @claimName + ''' (claimId=' + CONVERT(nvarchar, @claimId) + ').'
+ INSERT INTO dbo.ResourceClaimActionAuthorizationStrategies(ResourceClaimActionId, AuthorizationStrategyId)
+ VALUES (@resourceClaimActionId, @authorizationStrategyId)
+
+
+ -- Default Update authorization
+ PRINT 'Creating action ''Update'' for resource claim ''' + @claimName + ''' (claimId=' + CONVERT(nvarchar, @claimId) + ').'
+ INSERT INTO dbo.ResourceClaimActions(ResourceClaimId, ActionId)
+ VALUES (@claimId, @UpdateActionId)
+
+ SET @resourceClaimActionId = SCOPE_IDENTITY()
+
+
+ SET @authorizationStrategyId = NULL
+
+ SELECT @authorizationStrategyId = a.AuthorizationStrategyId
+ FROM dbo.AuthorizationStrategies a
+ WHERE a.AuthorizationStrategyName = 'RelationshipsWithEdOrgsAndPeople'
+
+ IF @authorizationStrategyId IS NULL
+ BEGIN
+ SET @msg = 'AuthorizationStrategy does not exist: ''RelationshipsWithEdOrgsAndPeople''';
+ THROW 50000, @msg, 1
+ END
+
+ PRINT 'Adding authorization strategy ''RelationshipsWithEdOrgsAndPeople'' for resource claim ''' + @claimName + ''' (claimId=' + CONVERT(nvarchar, @claimId) + ').'
+ INSERT INTO dbo.ResourceClaimActionAuthorizationStrategies(ResourceClaimActionId, AuthorizationStrategyId)
+ VALUES (@resourceClaimActionId, @authorizationStrategyId)
+
+
+ -- Default Delete authorization
+ PRINT 'Creating action ''Delete'' for resource claim ''' + @claimName + ''' (claimId=' + CONVERT(nvarchar, @claimId) + ').'
+ INSERT INTO dbo.ResourceClaimActions(ResourceClaimId, ActionId)
+ VALUES (@claimId, @DeleteActionId)
+
+ SET @resourceClaimActionId = SCOPE_IDENTITY()
+
+
+ SET @authorizationStrategyId = NULL
+
+ SELECT @authorizationStrategyId = a.AuthorizationStrategyId
+ FROM dbo.AuthorizationStrategies a
+ WHERE a.AuthorizationStrategyName = 'RelationshipsWithEdOrgsAndPeople'
+
+ IF @authorizationStrategyId IS NULL
+ BEGIN
+ SET @msg = 'AuthorizationStrategy does not exist: ''RelationshipsWithEdOrgsAndPeople''';
+ THROW 50000, @msg, 1
+ END
+
+ PRINT 'Adding authorization strategy ''RelationshipsWithEdOrgsAndPeople'' for resource claim ''' + @claimName + ''' (claimId=' + CONVERT(nvarchar, @claimId) + ').'
+ INSERT INTO dbo.ResourceClaimActionAuthorizationStrategies(ResourceClaimActionId, AuthorizationStrategyId)
+ VALUES (@resourceClaimActionId, @authorizationStrategyId)
+
+
+ -- Processing claim sets for http://ed-fi.org/ods/identity/claims/domains/relationshipBasedData
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Claim set: 'SIS Vendor'
+ ----------------------------------------------------------------------------------------------------------------------------
+ SET @claimSetName = 'SIS Vendor'
+ SET @claimSetId = NULL
+
+ SELECT @claimSetId = ClaimSetId
+ FROM dbo.ClaimSets
+ WHERE ClaimSetName = @claimSetName
+
+ IF @claimSetId IS NULL
+ BEGIN
+ PRINT 'Creating new claim set: ' + @claimSetName
+
+ INSERT INTO dbo.ClaimSets(ClaimSetName)
+ VALUES (@claimSetName)
+
+ SET @claimSetId = SCOPE_IDENTITY()
+ END
+
+ PRINT 'Deleting existing actions for claim set ''' + @claimSetName + ''' (claimSetId=' + CONVERT(nvarchar, @claimSetId) + ') on resource claim ''' + @claimName + '''.'
+
+ DELETE FROM dbo.ClaimSetResourceClaimActionAuthorizationStrategyOverrides
+ WHERE ClaimSetResourceClaimActionId IN (SELECT ClaimSetResourceClaimActionId FROM dbo.ClaimSetResourceClaimActions WHERE ClaimSetId = @claimSetId AND ResourceClaimId = @claimId)
+
+ DELETE FROM dbo.ClaimSetResourceClaimActions
+ WHERE ClaimSetId = @claimSetId AND ResourceClaimId = @claimId
+
+
+ -- Claim set-specific Create authorization
+ PRINT 'Creating ''Create'' action for claim set ''' + @claimSetName + ''' (claimSetId=' + CONVERT(nvarchar, @claimSetId) + ', actionId = ' + CONVERT(nvarchar, @CreateActionId) + ').'
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (@claimId, @claimSetId, @CreateActionId) -- Create
+
+ SET @claimSetResourceClaimActionId = SCOPE_IDENTITY()
+
+
+
+
+ -- Claim set-specific Read authorization
+ PRINT 'Creating ''Read'' action for claim set ''' + @claimSetName + ''' (claimSetId=' + CONVERT(nvarchar, @claimSetId) + ', actionId = ' + CONVERT(nvarchar, @ReadActionId) + ').'
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (@claimId, @claimSetId, @ReadActionId) -- Read
+
+ SET @claimSetResourceClaimActionId = SCOPE_IDENTITY()
+
+
+
+
+ -- Claim set-specific Update authorization
+ PRINT 'Creating ''Update'' action for claim set ''' + @claimSetName + ''' (claimSetId=' + CONVERT(nvarchar, @claimSetId) + ', actionId = ' + CONVERT(nvarchar, @UpdateActionId) + ').'
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (@claimId, @claimSetId, @UpdateActionId) -- Update
+
+ SET @claimSetResourceClaimActionId = SCOPE_IDENTITY()
+
+
+
+
+ -- Claim set-specific Delete authorization
+ PRINT 'Creating ''Delete'' action for claim set ''' + @claimSetName + ''' (claimSetId=' + CONVERT(nvarchar, @claimSetId) + ', actionId = ' + CONVERT(nvarchar, @DeleteActionId) + ').'
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (@claimId, @claimSetId, @DeleteActionId) -- Delete
+
+ SET @claimSetResourceClaimActionId = SCOPE_IDENTITY()
+
+
+
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Claim set: 'Ed-Fi Sandbox'
+ ----------------------------------------------------------------------------------------------------------------------------
+ SET @claimSetName = 'Ed-Fi Sandbox'
+ SET @claimSetId = NULL
+
+ SELECT @claimSetId = ClaimSetId
+ FROM dbo.ClaimSets
+ WHERE ClaimSetName = @claimSetName
+
+ IF @claimSetId IS NULL
+ BEGIN
+ PRINT 'Creating new claim set: ' + @claimSetName
+
+ INSERT INTO dbo.ClaimSets(ClaimSetName)
+ VALUES (@claimSetName)
+
+ SET @claimSetId = SCOPE_IDENTITY()
+ END
+
+ PRINT 'Deleting existing actions for claim set ''' + @claimSetName + ''' (claimSetId=' + CONVERT(nvarchar, @claimSetId) + ') on resource claim ''' + @claimName + '''.'
+
+ DELETE FROM dbo.ClaimSetResourceClaimActionAuthorizationStrategyOverrides
+ WHERE ClaimSetResourceClaimActionId IN (SELECT ClaimSetResourceClaimActionId FROM dbo.ClaimSetResourceClaimActions WHERE ClaimSetId = @claimSetId AND ResourceClaimId = @claimId)
+
+ DELETE FROM dbo.ClaimSetResourceClaimActions
+ WHERE ClaimSetId = @claimSetId AND ResourceClaimId = @claimId
+
+
+ -- Claim set-specific Create authorization
+ PRINT 'Creating ''Create'' action for claim set ''' + @claimSetName + ''' (claimSetId=' + CONVERT(nvarchar, @claimSetId) + ', actionId = ' + CONVERT(nvarchar, @CreateActionId) + ').'
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (@claimId, @claimSetId, @CreateActionId) -- Create
+
+ SET @claimSetResourceClaimActionId = SCOPE_IDENTITY()
+
+
+
+
+ -- Claim set-specific Read authorization
+ PRINT 'Creating ''Read'' action for claim set ''' + @claimSetName + ''' (claimSetId=' + CONVERT(nvarchar, @claimSetId) + ', actionId = ' + CONVERT(nvarchar, @ReadActionId) + ').'
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (@claimId, @claimSetId, @ReadActionId) -- Read
+
+ SET @claimSetResourceClaimActionId = SCOPE_IDENTITY()
+
+
+
+
+ -- Claim set-specific Update authorization
+ PRINT 'Creating ''Update'' action for claim set ''' + @claimSetName + ''' (claimSetId=' + CONVERT(nvarchar, @claimSetId) + ', actionId = ' + CONVERT(nvarchar, @UpdateActionId) + ').'
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (@claimId, @claimSetId, @UpdateActionId) -- Update
+
+ SET @claimSetResourceClaimActionId = SCOPE_IDENTITY()
+
+
+
+
+ -- Claim set-specific Delete authorization
+ PRINT 'Creating ''Delete'' action for claim set ''' + @claimSetName + ''' (claimSetId=' + CONVERT(nvarchar, @claimSetId) + ', actionId = ' + CONVERT(nvarchar, @DeleteActionId) + ').'
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (@claimId, @claimSetId, @DeleteActionId) -- Delete
+
+ SET @claimSetResourceClaimActionId = SCOPE_IDENTITY()
+
+
+
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Claim set: 'District Hosted SIS Vendor'
+ ----------------------------------------------------------------------------------------------------------------------------
+ SET @claimSetName = 'District Hosted SIS Vendor'
+ SET @claimSetId = NULL
+
+ SELECT @claimSetId = ClaimSetId
+ FROM dbo.ClaimSets
+ WHERE ClaimSetName = @claimSetName
+
+ IF @claimSetId IS NULL
+ BEGIN
+ PRINT 'Creating new claim set: ' + @claimSetName
+
+ INSERT INTO dbo.ClaimSets(ClaimSetName)
+ VALUES (@claimSetName)
+
+ SET @claimSetId = SCOPE_IDENTITY()
+ END
+
+ PRINT 'Deleting existing actions for claim set ''' + @claimSetName + ''' (claimSetId=' + CONVERT(nvarchar, @claimSetId) + ') on resource claim ''' + @claimName + '''.'
+
+ DELETE FROM dbo.ClaimSetResourceClaimActionAuthorizationStrategyOverrides
+ WHERE ClaimSetResourceClaimActionId IN (SELECT ClaimSetResourceClaimActionId FROM dbo.ClaimSetResourceClaimActions WHERE ClaimSetId = @claimSetId AND ResourceClaimId = @claimId)
+
+ DELETE FROM dbo.ClaimSetResourceClaimActions
+ WHERE ClaimSetId = @claimSetId AND ResourceClaimId = @claimId
+
+
+ -- Claim set-specific Create authorization
+ PRINT 'Creating ''Create'' action for claim set ''' + @claimSetName + ''' (claimSetId=' + CONVERT(nvarchar, @claimSetId) + ', actionId = ' + CONVERT(nvarchar, @CreateActionId) + ').'
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (@claimId, @claimSetId, @CreateActionId) -- Create
+
+ SET @claimSetResourceClaimActionId = SCOPE_IDENTITY()
+
+
+
+
+ -- Claim set-specific Read authorization
+ PRINT 'Creating ''Read'' action for claim set ''' + @claimSetName + ''' (claimSetId=' + CONVERT(nvarchar, @claimSetId) + ', actionId = ' + CONVERT(nvarchar, @ReadActionId) + ').'
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (@claimId, @claimSetId, @ReadActionId) -- Read
+
+ SET @claimSetResourceClaimActionId = SCOPE_IDENTITY()
+
+
+
+
+ -- Claim set-specific Update authorization
+ PRINT 'Creating ''Update'' action for claim set ''' + @claimSetName + ''' (claimSetId=' + CONVERT(nvarchar, @claimSetId) + ', actionId = ' + CONVERT(nvarchar, @UpdateActionId) + ').'
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (@claimId, @claimSetId, @UpdateActionId) -- Update
+
+ SET @claimSetResourceClaimActionId = SCOPE_IDENTITY()
+
+
+
+
+ -- Claim set-specific Delete authorization
+ PRINT 'Creating ''Delete'' action for claim set ''' + @claimSetName + ''' (claimSetId=' + CONVERT(nvarchar, @claimSetId) + ', actionId = ' + CONVERT(nvarchar, @DeleteActionId) + ').'
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (@claimId, @claimSetId, @DeleteActionId) -- Delete
+
+ SET @claimSetResourceClaimActionId = SCOPE_IDENTITY()
+
+
+
+ -- Push claimId to the stack
+ INSERT INTO @claimIdStack (ResourceClaimId) VALUES (@claimId)
+
+ -- Processing children of http://ed-fi.org/ods/identity/claims/domains/relationshipBasedData
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Resource Claim: 'http://ed-fi.org/ods/identity/claims/studentSection504ProgramAssociation'
+ ----------------------------------------------------------------------------------------------------------------------------
+ SET @claimName = 'http://ed-fi.org/ods/identity/claims/studentSection504ProgramAssociation'
+ SET @claimId = NULL
+
+ SELECT @claimId = ResourceClaimId, @existingParentResourceClaimId = ParentResourceClaimId
+ FROM dbo.ResourceClaims
+ WHERE ClaimName = @claimName
+
+ SELECT @parentResourceClaimId = ResourceClaimId
+ FROM @claimIdStack
+ WHERE Id = (SELECT Max(Id) FROM @claimIdStack)
+
+ IF @claimId IS NULL
+ BEGIN
+ PRINT 'Creating new claim: ' + @claimName
+
+ INSERT INTO dbo.ResourceClaims(ResourceName, ClaimName, ParentResourceClaimId)
+ VALUES ('studentSection504ProgramAssociation', 'http://ed-fi.org/ods/identity/claims/studentSection504ProgramAssociation', @parentResourceClaimId)
+
+ SET @claimId = SCOPE_IDENTITY()
+ END
+ ELSE
+ BEGIN
+ IF @parentResourceClaimId != @existingParentResourceClaimId OR (@parentResourceClaimId IS NULL AND @existingParentResourceClaimId IS NOT NULL) OR (@parentResourceClaimId IS NOT NULL AND @existingParentResourceClaimId IS NULL)
+ BEGIN
+ PRINT 'Repointing claim ''' + @claimName + ''' (ResourceClaimId=' + CONVERT(nvarchar, @claimId) + ') to new parent (ResourceClaimId=' + CONVERT(nvarchar, @parentResourceClaimId) + ')'
+
+ UPDATE dbo.ResourceClaims
+ SET ParentResourceClaimId = @parentResourceClaimId
+ WHERE ResourceClaimId = @claimId
+ END
+ END
+
+
+ -- Pop the stack
+ DELETE FROM @claimIdStack WHERE Id = (SELECT Max(Id) FROM @claimIdStack)
+
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Resource Claim: 'http://ed-fi.org/ods/identity/claims/domains/relationshipBasedData'
+ ----------------------------------------------------------------------------------------------------------------------------
+ SET @claimName = 'http://ed-fi.org/ods/identity/claims/domains/relationshipBasedData'
+ SET @claimId = NULL
+
+ SELECT @claimId = ResourceClaimId, @existingParentResourceClaimId = ParentResourceClaimId
+ FROM dbo.ResourceClaims
+ WHERE ClaimName = @claimName
+
+ SELECT @parentResourceClaimId = ResourceClaimId
+ FROM @claimIdStack
+ WHERE Id = (SELECT Max(Id) FROM @claimIdStack)
+
+ IF @claimId IS NULL
+ BEGIN
+ PRINT 'Creating new claim: ' + @claimName
+
+ INSERT INTO dbo.ResourceClaims(ResourceName, ClaimName, ParentResourceClaimId)
+ VALUES ('relationshipBasedData', 'http://ed-fi.org/ods/identity/claims/domains/relationshipBasedData', @parentResourceClaimId)
+
+ SET @claimId = SCOPE_IDENTITY()
+ END
+ ELSE
+ BEGIN
+ IF @parentResourceClaimId != @existingParentResourceClaimId OR (@parentResourceClaimId IS NULL AND @existingParentResourceClaimId IS NOT NULL) OR (@parentResourceClaimId IS NOT NULL AND @existingParentResourceClaimId IS NULL)
+ BEGIN
+ PRINT 'Repointing claim ''' + @claimName + ''' (ResourceClaimId=' + CONVERT(nvarchar, @claimId) + ') to new parent (ResourceClaimId=' + CONVERT(nvarchar, @parentResourceClaimId) + ')'
+
+ UPDATE dbo.ResourceClaims
+ SET ParentResourceClaimId = @parentResourceClaimId
+ WHERE ResourceClaimId = @claimId
+ END
+ END
+
+ -- Setting default authorization metadata
+ PRINT 'Deleting default action authorizations for resource claim ''' + @claimName + ''' (claimId=' + CONVERT(nvarchar, @claimId) + ').'
+
+ DELETE FROM dbo.ResourceClaimActionAuthorizationStrategies
+ WHERE ResourceClaimActionId IN (SELECT ResourceClaimActionId FROM dbo.ResourceClaimActions WHERE ResourceClaimId = @claimId);
+
+ DELETE FROM dbo.ResourceClaimActions
+ WHERE ResourceClaimId = @claimId
+
+ -- Default Create authorization
+ PRINT 'Creating action ''Create'' for resource claim ''' + @claimName + ''' (claimId=' + CONVERT(nvarchar, @claimId) + ').'
+ INSERT INTO dbo.ResourceClaimActions(ResourceClaimId, ActionId)
+ VALUES (@claimId, @CreateActionId)
+
+ SET @resourceClaimActionId = SCOPE_IDENTITY()
+
+
+ SET @authorizationStrategyId = NULL
+
+ SELECT @authorizationStrategyId = a.AuthorizationStrategyId
+ FROM dbo.AuthorizationStrategies a
+ WHERE a.AuthorizationStrategyName = 'RelationshipsWithEdOrgsAndPeople'
+
+ IF @authorizationStrategyId IS NULL
+ BEGIN
+ SET @msg = 'AuthorizationStrategy does not exist: ''RelationshipsWithEdOrgsAndPeople''';
+ THROW 50000, @msg, 1
+ END
+
+ PRINT 'Adding authorization strategy ''RelationshipsWithEdOrgsAndPeople'' for resource claim ''' + @claimName + ''' (claimId=' + CONVERT(nvarchar, @claimId) + ').'
+ INSERT INTO dbo.ResourceClaimActionAuthorizationStrategies(ResourceClaimActionId, AuthorizationStrategyId)
+ VALUES (@resourceClaimActionId, @authorizationStrategyId)
+
+
+ -- Default Read authorization
+ PRINT 'Creating action ''Read'' for resource claim ''' + @claimName + ''' (claimId=' + CONVERT(nvarchar, @claimId) + ').'
+ INSERT INTO dbo.ResourceClaimActions(ResourceClaimId, ActionId)
+ VALUES (@claimId, @ReadActionId)
+
+ SET @resourceClaimActionId = SCOPE_IDENTITY()
+
+
+ SET @authorizationStrategyId = NULL
+
+ SELECT @authorizationStrategyId = a.AuthorizationStrategyId
+ FROM dbo.AuthorizationStrategies a
+ WHERE a.AuthorizationStrategyName = 'RelationshipsWithEdOrgsAndPeople'
+
+ IF @authorizationStrategyId IS NULL
+ BEGIN
+ SET @msg = 'AuthorizationStrategy does not exist: ''RelationshipsWithEdOrgsAndPeople''';
+ THROW 50000, @msg, 1
+ END
+
+ PRINT 'Adding authorization strategy ''RelationshipsWithEdOrgsAndPeople'' for resource claim ''' + @claimName + ''' (claimId=' + CONVERT(nvarchar, @claimId) + ').'
+ INSERT INTO dbo.ResourceClaimActionAuthorizationStrategies(ResourceClaimActionId, AuthorizationStrategyId)
+ VALUES (@resourceClaimActionId, @authorizationStrategyId)
+
+
+ -- Default Update authorization
+ PRINT 'Creating action ''Update'' for resource claim ''' + @claimName + ''' (claimId=' + CONVERT(nvarchar, @claimId) + ').'
+ INSERT INTO dbo.ResourceClaimActions(ResourceClaimId, ActionId)
+ VALUES (@claimId, @UpdateActionId)
+
+ SET @resourceClaimActionId = SCOPE_IDENTITY()
+
+
+ SET @authorizationStrategyId = NULL
+
+ SELECT @authorizationStrategyId = a.AuthorizationStrategyId
+ FROM dbo.AuthorizationStrategies a
+ WHERE a.AuthorizationStrategyName = 'RelationshipsWithEdOrgsAndPeople'
+
+ IF @authorizationStrategyId IS NULL
+ BEGIN
+ SET @msg = 'AuthorizationStrategy does not exist: ''RelationshipsWithEdOrgsAndPeople''';
+ THROW 50000, @msg, 1
+ END
+
+ PRINT 'Adding authorization strategy ''RelationshipsWithEdOrgsAndPeople'' for resource claim ''' + @claimName + ''' (claimId=' + CONVERT(nvarchar, @claimId) + ').'
+ INSERT INTO dbo.ResourceClaimActionAuthorizationStrategies(ResourceClaimActionId, AuthorizationStrategyId)
+ VALUES (@resourceClaimActionId, @authorizationStrategyId)
+
+
+ -- Default Delete authorization
+ PRINT 'Creating action ''Delete'' for resource claim ''' + @claimName + ''' (claimId=' + CONVERT(nvarchar, @claimId) + ').'
+ INSERT INTO dbo.ResourceClaimActions(ResourceClaimId, ActionId)
+ VALUES (@claimId, @DeleteActionId)
+
+ SET @resourceClaimActionId = SCOPE_IDENTITY()
+
+
+ SET @authorizationStrategyId = NULL
+
+ SELECT @authorizationStrategyId = a.AuthorizationStrategyId
+ FROM dbo.AuthorizationStrategies a
+ WHERE a.AuthorizationStrategyName = 'RelationshipsWithEdOrgsAndPeople'
+
+ IF @authorizationStrategyId IS NULL
+ BEGIN
+ SET @msg = 'AuthorizationStrategy does not exist: ''RelationshipsWithEdOrgsAndPeople''';
+ THROW 50000, @msg, 1
+ END
+
+ PRINT 'Adding authorization strategy ''RelationshipsWithEdOrgsAndPeople'' for resource claim ''' + @claimName + ''' (claimId=' + CONVERT(nvarchar, @claimId) + ').'
+ INSERT INTO dbo.ResourceClaimActionAuthorizationStrategies(ResourceClaimActionId, AuthorizationStrategyId)
+ VALUES (@resourceClaimActionId, @authorizationStrategyId)
+
+
+ -- Processing claim sets for http://ed-fi.org/ods/identity/claims/domains/relationshipBasedData
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Claim set: 'SIS Vendor'
+ ----------------------------------------------------------------------------------------------------------------------------
+ SET @claimSetName = 'SIS Vendor'
+ SET @claimSetId = NULL
+
+ SELECT @claimSetId = ClaimSetId
+ FROM dbo.ClaimSets
+ WHERE ClaimSetName = @claimSetName
+
+ IF @claimSetId IS NULL
+ BEGIN
+ PRINT 'Creating new claim set: ' + @claimSetName
+
+ INSERT INTO dbo.ClaimSets(ClaimSetName)
+ VALUES (@claimSetName)
+
+ SET @claimSetId = SCOPE_IDENTITY()
+ END
+
+ PRINT 'Deleting existing actions for claim set ''' + @claimSetName + ''' (claimSetId=' + CONVERT(nvarchar, @claimSetId) + ') on resource claim ''' + @claimName + '''.'
+
+ DELETE FROM dbo.ClaimSetResourceClaimActionAuthorizationStrategyOverrides
+ WHERE ClaimSetResourceClaimActionId IN (SELECT ClaimSetResourceClaimActionId FROM dbo.ClaimSetResourceClaimActions WHERE ClaimSetId = @claimSetId AND ResourceClaimId = @claimId)
+
+ DELETE FROM dbo.ClaimSetResourceClaimActions
+ WHERE ClaimSetId = @claimSetId AND ResourceClaimId = @claimId
+
+
+ -- Claim set-specific Create authorization
+ PRINT 'Creating ''Create'' action for claim set ''' + @claimSetName + ''' (claimSetId=' + CONVERT(nvarchar, @claimSetId) + ', actionId = ' + CONVERT(nvarchar, @CreateActionId) + ').'
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (@claimId, @claimSetId, @CreateActionId) -- Create
+
+ SET @claimSetResourceClaimActionId = SCOPE_IDENTITY()
+
+
+
+
+ -- Claim set-specific Read authorization
+ PRINT 'Creating ''Read'' action for claim set ''' + @claimSetName + ''' (claimSetId=' + CONVERT(nvarchar, @claimSetId) + ', actionId = ' + CONVERT(nvarchar, @ReadActionId) + ').'
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (@claimId, @claimSetId, @ReadActionId) -- Read
+
+ SET @claimSetResourceClaimActionId = SCOPE_IDENTITY()
+
+
+
+
+ -- Claim set-specific Update authorization
+ PRINT 'Creating ''Update'' action for claim set ''' + @claimSetName + ''' (claimSetId=' + CONVERT(nvarchar, @claimSetId) + ', actionId = ' + CONVERT(nvarchar, @UpdateActionId) + ').'
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (@claimId, @claimSetId, @UpdateActionId) -- Update
+
+ SET @claimSetResourceClaimActionId = SCOPE_IDENTITY()
+
+
+
+
+ -- Claim set-specific Delete authorization
+ PRINT 'Creating ''Delete'' action for claim set ''' + @claimSetName + ''' (claimSetId=' + CONVERT(nvarchar, @claimSetId) + ', actionId = ' + CONVERT(nvarchar, @DeleteActionId) + ').'
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (@claimId, @claimSetId, @DeleteActionId) -- Delete
+
+ SET @claimSetResourceClaimActionId = SCOPE_IDENTITY()
+
+
+
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Claim set: 'Ed-Fi Sandbox'
+ ----------------------------------------------------------------------------------------------------------------------------
+ SET @claimSetName = 'Ed-Fi Sandbox'
+ SET @claimSetId = NULL
+
+ SELECT @claimSetId = ClaimSetId
+ FROM dbo.ClaimSets
+ WHERE ClaimSetName = @claimSetName
+
+ IF @claimSetId IS NULL
+ BEGIN
+ PRINT 'Creating new claim set: ' + @claimSetName
+
+ INSERT INTO dbo.ClaimSets(ClaimSetName)
+ VALUES (@claimSetName)
+
+ SET @claimSetId = SCOPE_IDENTITY()
+ END
+
+ PRINT 'Deleting existing actions for claim set ''' + @claimSetName + ''' (claimSetId=' + CONVERT(nvarchar, @claimSetId) + ') on resource claim ''' + @claimName + '''.'
+
+ DELETE FROM dbo.ClaimSetResourceClaimActionAuthorizationStrategyOverrides
+ WHERE ClaimSetResourceClaimActionId IN (SELECT ClaimSetResourceClaimActionId FROM dbo.ClaimSetResourceClaimActions WHERE ClaimSetId = @claimSetId AND ResourceClaimId = @claimId)
+
+ DELETE FROM dbo.ClaimSetResourceClaimActions
+ WHERE ClaimSetId = @claimSetId AND ResourceClaimId = @claimId
+
+
+ -- Claim set-specific Create authorization
+ PRINT 'Creating ''Create'' action for claim set ''' + @claimSetName + ''' (claimSetId=' + CONVERT(nvarchar, @claimSetId) + ', actionId = ' + CONVERT(nvarchar, @CreateActionId) + ').'
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (@claimId, @claimSetId, @CreateActionId) -- Create
+
+ SET @claimSetResourceClaimActionId = SCOPE_IDENTITY()
+
+
+
+
+ -- Claim set-specific Read authorization
+ PRINT 'Creating ''Read'' action for claim set ''' + @claimSetName + ''' (claimSetId=' + CONVERT(nvarchar, @claimSetId) + ', actionId = ' + CONVERT(nvarchar, @ReadActionId) + ').'
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (@claimId, @claimSetId, @ReadActionId) -- Read
+
+ SET @claimSetResourceClaimActionId = SCOPE_IDENTITY()
+
+
+
+
+ -- Claim set-specific Update authorization
+ PRINT 'Creating ''Update'' action for claim set ''' + @claimSetName + ''' (claimSetId=' + CONVERT(nvarchar, @claimSetId) + ', actionId = ' + CONVERT(nvarchar, @UpdateActionId) + ').'
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (@claimId, @claimSetId, @UpdateActionId) -- Update
+
+ SET @claimSetResourceClaimActionId = SCOPE_IDENTITY()
+
+
+
+
+ -- Claim set-specific Delete authorization
+ PRINT 'Creating ''Delete'' action for claim set ''' + @claimSetName + ''' (claimSetId=' + CONVERT(nvarchar, @claimSetId) + ', actionId = ' + CONVERT(nvarchar, @DeleteActionId) + ').'
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (@claimId, @claimSetId, @DeleteActionId) -- Delete
+
+ SET @claimSetResourceClaimActionId = SCOPE_IDENTITY()
+
+
+
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Claim set: 'District Hosted SIS Vendor'
+ ----------------------------------------------------------------------------------------------------------------------------
+ SET @claimSetName = 'District Hosted SIS Vendor'
+ SET @claimSetId = NULL
+
+ SELECT @claimSetId = ClaimSetId
+ FROM dbo.ClaimSets
+ WHERE ClaimSetName = @claimSetName
+
+ IF @claimSetId IS NULL
+ BEGIN
+ PRINT 'Creating new claim set: ' + @claimSetName
+
+ INSERT INTO dbo.ClaimSets(ClaimSetName)
+ VALUES (@claimSetName)
+
+ SET @claimSetId = SCOPE_IDENTITY()
+ END
+
+ PRINT 'Deleting existing actions for claim set ''' + @claimSetName + ''' (claimSetId=' + CONVERT(nvarchar, @claimSetId) + ') on resource claim ''' + @claimName + '''.'
+
+ DELETE FROM dbo.ClaimSetResourceClaimActionAuthorizationStrategyOverrides
+ WHERE ClaimSetResourceClaimActionId IN (SELECT ClaimSetResourceClaimActionId FROM dbo.ClaimSetResourceClaimActions WHERE ClaimSetId = @claimSetId AND ResourceClaimId = @claimId)
+
+ DELETE FROM dbo.ClaimSetResourceClaimActions
+ WHERE ClaimSetId = @claimSetId AND ResourceClaimId = @claimId
+
+
+ -- Claim set-specific Create authorization
+ PRINT 'Creating ''Create'' action for claim set ''' + @claimSetName + ''' (claimSetId=' + CONVERT(nvarchar, @claimSetId) + ', actionId = ' + CONVERT(nvarchar, @CreateActionId) + ').'
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (@claimId, @claimSetId, @CreateActionId) -- Create
+
+ SET @claimSetResourceClaimActionId = SCOPE_IDENTITY()
+
+
+
+
+ -- Claim set-specific Read authorization
+ PRINT 'Creating ''Read'' action for claim set ''' + @claimSetName + ''' (claimSetId=' + CONVERT(nvarchar, @claimSetId) + ', actionId = ' + CONVERT(nvarchar, @ReadActionId) + ').'
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (@claimId, @claimSetId, @ReadActionId) -- Read
+
+ SET @claimSetResourceClaimActionId = SCOPE_IDENTITY()
+
+
+
+
+ -- Claim set-specific Update authorization
+ PRINT 'Creating ''Update'' action for claim set ''' + @claimSetName + ''' (claimSetId=' + CONVERT(nvarchar, @claimSetId) + ', actionId = ' + CONVERT(nvarchar, @UpdateActionId) + ').'
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (@claimId, @claimSetId, @UpdateActionId) -- Update
+
+ SET @claimSetResourceClaimActionId = SCOPE_IDENTITY()
+
+
+
+
+ -- Claim set-specific Delete authorization
+ PRINT 'Creating ''Delete'' action for claim set ''' + @claimSetName + ''' (claimSetId=' + CONVERT(nvarchar, @claimSetId) + ', actionId = ' + CONVERT(nvarchar, @DeleteActionId) + ').'
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (@claimId, @claimSetId, @DeleteActionId) -- Delete
+
+ SET @claimSetResourceClaimActionId = SCOPE_IDENTITY()
+
+
+
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Claim set: 'Assessment Vendor'
+ ----------------------------------------------------------------------------------------------------------------------------
+ SET @claimSetName = 'Assessment Vendor'
+ SET @claimSetId = NULL
+
+ SELECT @claimSetId = ClaimSetId
+ FROM dbo.ClaimSets
+ WHERE ClaimSetName = @claimSetName
+
+ IF @claimSetId IS NULL
+ BEGIN
+ PRINT 'Creating new claim set: ' + @claimSetName
+
+ INSERT INTO dbo.ClaimSets(ClaimSetName)
+ VALUES (@claimSetName)
+
+ SET @claimSetId = SCOPE_IDENTITY()
+ END
+
+ PRINT 'Deleting existing actions for claim set ''' + @claimSetName + ''' (claimSetId=' + CONVERT(nvarchar, @claimSetId) + ') on resource claim ''' + @claimName + '''.'
+
+ DELETE FROM dbo.ClaimSetResourceClaimActionAuthorizationStrategyOverrides
+ WHERE ClaimSetResourceClaimActionId IN (SELECT ClaimSetResourceClaimActionId FROM dbo.ClaimSetResourceClaimActions WHERE ClaimSetId = @claimSetId AND ResourceClaimId = @claimId)
+
+ DELETE FROM dbo.ClaimSetResourceClaimActions
+ WHERE ClaimSetId = @claimSetId AND ResourceClaimId = @claimId
+
+
+ -- Claim set-specific Read authorization
+ PRINT 'Creating ''Read'' action for claim set ''' + @claimSetName + ''' (claimSetId=' + CONVERT(nvarchar, @claimSetId) + ', actionId = ' + CONVERT(nvarchar, @ReadActionId) + ').'
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (@claimId, @claimSetId, @ReadActionId) -- Read
+
+ SET @claimSetResourceClaimActionId = SCOPE_IDENTITY()
+
+
+
+ -- Push claimId to the stack
+ INSERT INTO @claimIdStack (ResourceClaimId) VALUES (@claimId)
+
+ -- Processing children of http://ed-fi.org/ods/identity/claims/domains/relationshipBasedData
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Resource Claim: 'http://ed-fi.org/ods/identity/claims/studentEducationOrganizationAssessmentAccommodation'
+ ----------------------------------------------------------------------------------------------------------------------------
+ SET @claimName = 'http://ed-fi.org/ods/identity/claims/studentEducationOrganizationAssessmentAccommodation'
+ SET @claimId = NULL
+
+ SELECT @claimId = ResourceClaimId, @existingParentResourceClaimId = ParentResourceClaimId
+ FROM dbo.ResourceClaims
+ WHERE ClaimName = @claimName
+
+ SELECT @parentResourceClaimId = ResourceClaimId
+ FROM @claimIdStack
+ WHERE Id = (SELECT Max(Id) FROM @claimIdStack)
+
+ IF @claimId IS NULL
+ BEGIN
+ PRINT 'Creating new claim: ' + @claimName
+
+ INSERT INTO dbo.ResourceClaims(ResourceName, ClaimName, ParentResourceClaimId)
+ VALUES ('studentEducationOrganizationAssessmentAccommodation', 'http://ed-fi.org/ods/identity/claims/studentEducationOrganizationAssessmentAccommodation', @parentResourceClaimId)
+
+ SET @claimId = SCOPE_IDENTITY()
+ END
+ ELSE
+ BEGIN
+ IF @parentResourceClaimId != @existingParentResourceClaimId OR (@parentResourceClaimId IS NULL AND @existingParentResourceClaimId IS NOT NULL) OR (@parentResourceClaimId IS NOT NULL AND @existingParentResourceClaimId IS NULL)
+ BEGIN
+ PRINT 'Repointing claim ''' + @claimName + ''' (ResourceClaimId=' + CONVERT(nvarchar, @claimId) + ') to new parent (ResourceClaimId=' + CONVERT(nvarchar, @parentResourceClaimId) + ')'
+
+ UPDATE dbo.ResourceClaims
+ SET ParentResourceClaimId = @parentResourceClaimId
+ WHERE ResourceClaimId = @claimId
+ END
+ END
+
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Resource Claim: 'http://ed-fi.org/ods/identity/claims/studentEducationOrganizationAssessmentAccommodationGeneralAccommodation'
+ ----------------------------------------------------------------------------------------------------------------------------
+ SET @claimName = 'http://ed-fi.org/ods/identity/claims/studentEducationOrganizationAssessmentAccommodationGeneralAccommodation'
+ SET @claimId = NULL
+
+ SELECT @claimId = ResourceClaimId, @existingParentResourceClaimId = ParentResourceClaimId
+ FROM dbo.ResourceClaims
+ WHERE ClaimName = @claimName
+
+ SELECT @parentResourceClaimId = ResourceClaimId
+ FROM @claimIdStack
+ WHERE Id = (SELECT Max(Id) FROM @claimIdStack)
+
+ IF @claimId IS NULL
+ BEGIN
+ PRINT 'Creating new claim: ' + @claimName
+
+ INSERT INTO dbo.ResourceClaims(ResourceName, ClaimName, ParentResourceClaimId)
+ VALUES ('studentEducationOrganizationAssessmentAccommodationGeneralAccommodation', 'http://ed-fi.org/ods/identity/claims/studentEducationOrganizationAssessmentAccommodationGeneralAccommodation', @parentResourceClaimId)
+
+ SET @claimId = SCOPE_IDENTITY()
+ END
+ ELSE
+ BEGIN
+ IF @parentResourceClaimId != @existingParentResourceClaimId OR (@parentResourceClaimId IS NULL AND @existingParentResourceClaimId IS NOT NULL) OR (@parentResourceClaimId IS NOT NULL AND @existingParentResourceClaimId IS NULL)
+ BEGIN
+ PRINT 'Repointing claim ''' + @claimName + ''' (ResourceClaimId=' + CONVERT(nvarchar, @claimId) + ') to new parent (ResourceClaimId=' + CONVERT(nvarchar, @parentResourceClaimId) + ')'
+
+ UPDATE dbo.ResourceClaims
+ SET ParentResourceClaimId = @parentResourceClaimId
+ WHERE ResourceClaimId = @claimId
+ END
+ END
+
+
+ -- Pop the stack
+ DELETE FROM @claimIdStack WHERE Id = (SELECT Max(Id) FROM @claimIdStack)
+
+
+ -- Pop the stack
+ DELETE FROM @claimIdStack WHERE Id = (SELECT Max(Id) FROM @claimIdStack)
+
+
+ COMMIT TRANSACTION
+END
diff --git a/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/MsSql/Data/Security/2200-AssessmentRegistration-security-metadata.xml b/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/MsSql/Data/Security/2200-AssessmentRegistration-security-metadata.xml
new file mode 100644
index 0000000000..a42736fe8f
--- /dev/null
+++ b/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/MsSql/Data/Security/2200-AssessmentRegistration-security-metadata.xml
@@ -0,0 +1,251 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/MsSql/Structure/Ods/0020-Tables.sql b/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/MsSql/Structure/Ods/0020-Tables.sql
index 0fe9ba63e0..916d0c540b 100644
--- a/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/MsSql/Structure/Ods/0020-Tables.sql
+++ b/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/MsSql/Structure/Ods/0020-Tables.sql
@@ -200,6 +200,72 @@ GO
ALTER TABLE [edfi].[AssessmentAcademicSubject] ADD CONSTRAINT [AssessmentAcademicSubject_DF_CreateDate] DEFAULT (getutcdate()) FOR [CreateDate]
GO
+-- Table [edfi].[AssessmentAdministration] --
+CREATE TABLE [edfi].[AssessmentAdministration] (
+ [AdministrationIdentifier] [NVARCHAR](255) NOT NULL,
+ [AssessmentIdentifier] [NVARCHAR](60) NOT NULL,
+ [AssigningEducationOrganizationId] [BIGINT] NOT NULL,
+ [Namespace] [NVARCHAR](255) NOT NULL,
+ [Discriminator] [NVARCHAR](128) NULL,
+ [CreateDate] [DATETIME2] NOT NULL,
+ [LastModifiedDate] [DATETIME2] NOT NULL,
+ [Id] [UNIQUEIDENTIFIER] NOT NULL,
+ CONSTRAINT [AssessmentAdministration_PK] PRIMARY KEY CLUSTERED (
+ [AdministrationIdentifier] ASC,
+ [AssessmentIdentifier] ASC,
+ [AssigningEducationOrganizationId] ASC,
+ [Namespace] ASC
+ ) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
+) ON [PRIMARY]
+GO
+ALTER TABLE [edfi].[AssessmentAdministration] ADD CONSTRAINT [AssessmentAdministration_DF_CreateDate] DEFAULT (getutcdate()) FOR [CreateDate]
+GO
+ALTER TABLE [edfi].[AssessmentAdministration] ADD CONSTRAINT [AssessmentAdministration_DF_Id] DEFAULT (newid()) FOR [Id]
+GO
+ALTER TABLE [edfi].[AssessmentAdministration] ADD CONSTRAINT [AssessmentAdministration_DF_LastModifiedDate] DEFAULT (getutcdate()) FOR [LastModifiedDate]
+GO
+
+-- Table [edfi].[AssessmentAdministrationAssessmentAdminstrationPeriod] --
+CREATE TABLE [edfi].[AssessmentAdministrationAssessmentAdminstrationPeriod] (
+ [AdministrationIdentifier] [NVARCHAR](255) NOT NULL,
+ [AssessmentIdentifier] [NVARCHAR](60) NOT NULL,
+ [AssigningEducationOrganizationId] [BIGINT] NOT NULL,
+ [Namespace] [NVARCHAR](255) NOT NULL,
+ [BeginDate] [DATE] NOT NULL,
+ [EndDate] [DATE] NULL,
+ [CreateDate] [DATETIME2] NOT NULL,
+ CONSTRAINT [AssessmentAdministrationAssessmentAdminstrationPeriod_PK] PRIMARY KEY CLUSTERED (
+ [AdministrationIdentifier] ASC,
+ [AssessmentIdentifier] ASC,
+ [AssigningEducationOrganizationId] ASC,
+ [Namespace] ASC,
+ [BeginDate] ASC
+ ) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
+) ON [PRIMARY]
+GO
+ALTER TABLE [edfi].[AssessmentAdministrationAssessmentAdminstrationPeriod] ADD CONSTRAINT [AssessmentAdministrationAssessmentAdminstrationPeriod_DF_CreateDate] DEFAULT (getutcdate()) FOR [CreateDate]
+GO
+
+-- Table [edfi].[AssessmentAdministrationAssessmentBatteryPart] --
+CREATE TABLE [edfi].[AssessmentAdministrationAssessmentBatteryPart] (
+ [AdministrationIdentifier] [NVARCHAR](255) NOT NULL,
+ [AssessmentIdentifier] [NVARCHAR](60) NOT NULL,
+ [AssigningEducationOrganizationId] [BIGINT] NOT NULL,
+ [Namespace] [NVARCHAR](255) NOT NULL,
+ [AssessmentBatteryPartName] [NVARCHAR](65) NOT NULL,
+ [CreateDate] [DATETIME2] NOT NULL,
+ CONSTRAINT [AssessmentAdministrationAssessmentBatteryPart_PK] PRIMARY KEY CLUSTERED (
+ [AdministrationIdentifier] ASC,
+ [AssessmentIdentifier] ASC,
+ [AssigningEducationOrganizationId] ASC,
+ [Namespace] ASC,
+ [AssessmentBatteryPartName] ASC
+ ) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
+) ON [PRIMARY]
+GO
+ALTER TABLE [edfi].[AssessmentAdministrationAssessmentBatteryPart] ADD CONSTRAINT [AssessmentAdministrationAssessmentBatteryPart_DF_CreateDate] DEFAULT (getutcdate()) FOR [CreateDate]
+GO
+
-- Table [edfi].[AssessmentAssessedGradeLevel] --
CREATE TABLE [edfi].[AssessmentAssessedGradeLevel] (
[AssessmentIdentifier] [NVARCHAR](60) NOT NULL,
@@ -216,6 +282,47 @@ GO
ALTER TABLE [edfi].[AssessmentAssessedGradeLevel] ADD CONSTRAINT [AssessmentAssessedGradeLevel_DF_CreateDate] DEFAULT (getutcdate()) FOR [CreateDate]
GO
+-- Table [edfi].[AssessmentBatteryPart] --
+CREATE TABLE [edfi].[AssessmentBatteryPart] (
+ [AssessmentBatteryPartName] [NVARCHAR](65) NOT NULL,
+ [AssessmentIdentifier] [NVARCHAR](60) NOT NULL,
+ [Namespace] [NVARCHAR](255) NOT NULL,
+ [Discriminator] [NVARCHAR](128) NULL,
+ [CreateDate] [DATETIME2] NOT NULL,
+ [LastModifiedDate] [DATETIME2] NOT NULL,
+ [Id] [UNIQUEIDENTIFIER] NOT NULL,
+ CONSTRAINT [AssessmentBatteryPart_PK] PRIMARY KEY CLUSTERED (
+ [AssessmentBatteryPartName] ASC,
+ [AssessmentIdentifier] ASC,
+ [Namespace] ASC
+ ) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
+) ON [PRIMARY]
+GO
+ALTER TABLE [edfi].[AssessmentBatteryPart] ADD CONSTRAINT [AssessmentBatteryPart_DF_CreateDate] DEFAULT (getutcdate()) FOR [CreateDate]
+GO
+ALTER TABLE [edfi].[AssessmentBatteryPart] ADD CONSTRAINT [AssessmentBatteryPart_DF_Id] DEFAULT (newid()) FOR [Id]
+GO
+ALTER TABLE [edfi].[AssessmentBatteryPart] ADD CONSTRAINT [AssessmentBatteryPart_DF_LastModifiedDate] DEFAULT (getutcdate()) FOR [LastModifiedDate]
+GO
+
+-- Table [edfi].[AssessmentBatteryPartObjectiveAssessment] --
+CREATE TABLE [edfi].[AssessmentBatteryPartObjectiveAssessment] (
+ [AssessmentBatteryPartName] [NVARCHAR](65) NOT NULL,
+ [AssessmentIdentifier] [NVARCHAR](60) NOT NULL,
+ [Namespace] [NVARCHAR](255) NOT NULL,
+ [IdentificationCode] [NVARCHAR](60) NOT NULL,
+ [CreateDate] [DATETIME2] NOT NULL,
+ CONSTRAINT [AssessmentBatteryPartObjectiveAssessment_PK] PRIMARY KEY CLUSTERED (
+ [AssessmentBatteryPartName] ASC,
+ [AssessmentIdentifier] ASC,
+ [Namespace] ASC,
+ [IdentificationCode] ASC
+ ) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
+) ON [PRIMARY]
+GO
+ALTER TABLE [edfi].[AssessmentBatteryPartObjectiveAssessment] ADD CONSTRAINT [AssessmentBatteryPartObjectiveAssessment_DF_CreateDate] DEFAULT (getutcdate()) FOR [CreateDate]
+GO
+
-- Table [edfi].[AssessmentCategoryDescriptor] --
CREATE TABLE [edfi].[AssessmentCategoryDescriptor] (
[AssessmentCategoryDescriptorId] [INT] NOT NULL,
@@ -574,6 +681,60 @@ GO
ALTER TABLE [edfi].[AssessmentSection] ADD CONSTRAINT [AssessmentSection_DF_CreateDate] DEFAULT (getutcdate()) FOR [CreateDate]
GO
+-- Table [edfi].[AssesssmentAdministrationParticipation] --
+CREATE TABLE [edfi].[AssesssmentAdministrationParticipation] (
+ [AdministrationIdentifier] [NVARCHAR](255) NOT NULL,
+ [AssessmentIdentifier] [NVARCHAR](60) NOT NULL,
+ [AssigningEducationOrganizationId] [BIGINT] NOT NULL,
+ [Namespace] [NVARCHAR](255) NOT NULL,
+ [ParticipatingEducationOrganizationId] [BIGINT] NOT NULL,
+ [Discriminator] [NVARCHAR](128) NULL,
+ [CreateDate] [DATETIME2] NOT NULL,
+ [LastModifiedDate] [DATETIME2] NOT NULL,
+ [Id] [UNIQUEIDENTIFIER] NOT NULL,
+ CONSTRAINT [AssesssmentAdministrationParticipation_PK] PRIMARY KEY CLUSTERED (
+ [AdministrationIdentifier] ASC,
+ [AssessmentIdentifier] ASC,
+ [AssigningEducationOrganizationId] ASC,
+ [Namespace] ASC,
+ [ParticipatingEducationOrganizationId] ASC
+ ) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
+) ON [PRIMARY]
+GO
+ALTER TABLE [edfi].[AssesssmentAdministrationParticipation] ADD CONSTRAINT [AssesssmentAdministrationParticipation_DF_CreateDate] DEFAULT (getutcdate()) FOR [CreateDate]
+GO
+ALTER TABLE [edfi].[AssesssmentAdministrationParticipation] ADD CONSTRAINT [AssesssmentAdministrationParticipation_DF_Id] DEFAULT (newid()) FOR [Id]
+GO
+ALTER TABLE [edfi].[AssesssmentAdministrationParticipation] ADD CONSTRAINT [AssesssmentAdministrationParticipation_DF_LastModifiedDate] DEFAULT (getutcdate()) FOR [LastModifiedDate]
+GO
+
+-- Table [edfi].[AssesssmentAdministrationParticipationAdministrationPointOfContact] --
+CREATE TABLE [edfi].[AssesssmentAdministrationParticipationAdministrationPointOfContact] (
+ [AdministrationIdentifier] [NVARCHAR](255) NOT NULL,
+ [AssessmentIdentifier] [NVARCHAR](60) NOT NULL,
+ [AssigningEducationOrganizationId] [BIGINT] NOT NULL,
+ [Namespace] [NVARCHAR](255) NOT NULL,
+ [ParticipatingEducationOrganizationId] [BIGINT] NOT NULL,
+ [EducationOrganizationId] [BIGINT] NOT NULL,
+ [ElectronicMailAddress] [NVARCHAR](128) NOT NULL,
+ [FirstName] [NVARCHAR](75) NOT NULL,
+ [LastSurname] [NVARCHAR](75) NOT NULL,
+ [LoginId] [NVARCHAR](60) NULL,
+ [CreateDate] [DATETIME2] NOT NULL,
+ CONSTRAINT [AssesssmentAdministrationParticipationAdministrationPointOfContact_PK] PRIMARY KEY CLUSTERED (
+ [AdministrationIdentifier] ASC,
+ [AssessmentIdentifier] ASC,
+ [AssigningEducationOrganizationId] ASC,
+ [Namespace] ASC,
+ [ParticipatingEducationOrganizationId] ASC,
+ [EducationOrganizationId] ASC,
+ [ElectronicMailAddress] ASC
+ ) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
+) ON [PRIMARY]
+GO
+ALTER TABLE [edfi].[AssesssmentAdministrationParticipationAdministrationPointOfContact] ADD CONSTRAINT [AssesssmentAdministrationParticipationAdministrationPointOfContact_DF_CreateDate] DEFAULT (getutcdate()) FOR [CreateDate]
+GO
+
-- Table [edfi].[AssignmentLateStatusDescriptor] --
CREATE TABLE [edfi].[AssignmentLateStatusDescriptor] (
[AssignmentLateStatusDescriptorId] [INT] NOT NULL,
@@ -6231,6 +6392,15 @@ GO
ALTER TABLE [edfi].[Section] ADD CONSTRAINT [Section_DF_LastModifiedDate] DEFAULT (getutcdate()) FOR [LastModifiedDate]
GO
+-- Table [edfi].[Section504DisabilityTypeDescriptor] --
+CREATE TABLE [edfi].[Section504DisabilityTypeDescriptor] (
+ [Section504DisabilityTypeDescriptorId] [INT] NOT NULL,
+ CONSTRAINT [Section504DisabilityTypeDescriptor_PK] PRIMARY KEY CLUSTERED (
+ [Section504DisabilityTypeDescriptorId] ASC
+ ) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
+) ON [PRIMARY]
+GO
+
-- Table [edfi].[SectionAttendanceTakenEvent] --
CREATE TABLE [edfi].[SectionAttendanceTakenEvent] (
[CalendarCode] [NVARCHAR](60) NOT NULL,
@@ -7835,6 +8005,147 @@ GO
ALTER TABLE [edfi].[StudentAssessmentPeriod] ADD CONSTRAINT [StudentAssessmentPeriod_DF_CreateDate] DEFAULT (getutcdate()) FOR [CreateDate]
GO
+-- Table [edfi].[StudentAssessmentRegistration] --
+CREATE TABLE [edfi].[StudentAssessmentRegistration] (
+ [AdministrationIdentifier] [NVARCHAR](255) NOT NULL,
+ [AssessmentIdentifier] [NVARCHAR](60) NOT NULL,
+ [AssigningEducationOrganizationId] [BIGINT] NOT NULL,
+ [EducationOrganizationId] [BIGINT] NOT NULL,
+ [Namespace] [NVARCHAR](255) NOT NULL,
+ [StudentUSI] [INT] NOT NULL,
+ [AssessmentGradeLevelDescriptorId] [INT] NULL,
+ [EntryDate] [DATE] NOT NULL,
+ [PlatformTypeDescriptorId] [INT] NULL,
+ [ReportingEducationOrganizationId] [BIGINT] NULL,
+ [SchoolId] [BIGINT] NOT NULL,
+ [TestingEducationOrganizationId] [BIGINT] NULL,
+ [Discriminator] [NVARCHAR](128) NULL,
+ [CreateDate] [DATETIME2] NOT NULL,
+ [LastModifiedDate] [DATETIME2] NOT NULL,
+ [Id] [UNIQUEIDENTIFIER] NOT NULL,
+ CONSTRAINT [StudentAssessmentRegistration_PK] PRIMARY KEY CLUSTERED (
+ [AdministrationIdentifier] ASC,
+ [AssessmentIdentifier] ASC,
+ [AssigningEducationOrganizationId] ASC,
+ [EducationOrganizationId] ASC,
+ [Namespace] ASC,
+ [StudentUSI] ASC
+ ) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
+) ON [PRIMARY]
+GO
+ALTER TABLE [edfi].[StudentAssessmentRegistration] ADD CONSTRAINT [StudentAssessmentRegistration_DF_CreateDate] DEFAULT (getutcdate()) FOR [CreateDate]
+GO
+ALTER TABLE [edfi].[StudentAssessmentRegistration] ADD CONSTRAINT [StudentAssessmentRegistration_DF_Id] DEFAULT (newid()) FOR [Id]
+GO
+ALTER TABLE [edfi].[StudentAssessmentRegistration] ADD CONSTRAINT [StudentAssessmentRegistration_DF_LastModifiedDate] DEFAULT (getutcdate()) FOR [LastModifiedDate]
+GO
+
+-- Table [edfi].[StudentAssessmentRegistrationAssessmentAccommodation] --
+CREATE TABLE [edfi].[StudentAssessmentRegistrationAssessmentAccommodation] (
+ [AdministrationIdentifier] [NVARCHAR](255) NOT NULL,
+ [AssessmentIdentifier] [NVARCHAR](60) NOT NULL,
+ [AssigningEducationOrganizationId] [BIGINT] NOT NULL,
+ [EducationOrganizationId] [BIGINT] NOT NULL,
+ [Namespace] [NVARCHAR](255) NOT NULL,
+ [StudentUSI] [INT] NOT NULL,
+ [AccommodationDescriptorId] [INT] NOT NULL,
+ [CreateDate] [DATETIME2] NOT NULL,
+ CONSTRAINT [StudentAssessmentRegistrationAssessmentAccommodation_PK] PRIMARY KEY CLUSTERED (
+ [AdministrationIdentifier] ASC,
+ [AssessmentIdentifier] ASC,
+ [AssigningEducationOrganizationId] ASC,
+ [EducationOrganizationId] ASC,
+ [Namespace] ASC,
+ [StudentUSI] ASC,
+ [AccommodationDescriptorId] ASC
+ ) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
+) ON [PRIMARY]
+GO
+ALTER TABLE [edfi].[StudentAssessmentRegistrationAssessmentAccommodation] ADD CONSTRAINT [StudentAssessmentRegistrationAssessmentAccommodation_DF_CreateDate] DEFAULT (getutcdate()) FOR [CreateDate]
+GO
+
+-- Table [edfi].[StudentAssessmentRegistrationAssessmentCustomization] --
+CREATE TABLE [edfi].[StudentAssessmentRegistrationAssessmentCustomization] (
+ [AdministrationIdentifier] [NVARCHAR](255) NOT NULL,
+ [AssessmentIdentifier] [NVARCHAR](60) NOT NULL,
+ [AssigningEducationOrganizationId] [BIGINT] NOT NULL,
+ [EducationOrganizationId] [BIGINT] NOT NULL,
+ [Namespace] [NVARCHAR](255) NOT NULL,
+ [StudentUSI] [INT] NOT NULL,
+ [CustomizationKey] [NVARCHAR](60) NOT NULL,
+ [CustomizationValue] [NVARCHAR](1024) NOT NULL,
+ [CreateDate] [DATETIME2] NOT NULL,
+ CONSTRAINT [StudentAssessmentRegistrationAssessmentCustomization_PK] PRIMARY KEY CLUSTERED (
+ [AdministrationIdentifier] ASC,
+ [AssessmentIdentifier] ASC,
+ [AssigningEducationOrganizationId] ASC,
+ [EducationOrganizationId] ASC,
+ [Namespace] ASC,
+ [StudentUSI] ASC,
+ [CustomizationKey] ASC
+ ) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
+) ON [PRIMARY]
+GO
+ALTER TABLE [edfi].[StudentAssessmentRegistrationAssessmentCustomization] ADD CONSTRAINT [StudentAssessmentRegistrationAssessmentCustomization_DF_CreateDate] DEFAULT (getutcdate()) FOR [CreateDate]
+GO
+
+-- Table [edfi].[StudentAssessmentRegistrationBatteryPartAssociation] --
+CREATE TABLE [edfi].[StudentAssessmentRegistrationBatteryPartAssociation] (
+ [AdministrationIdentifier] [NVARCHAR](255) NOT NULL,
+ [AssessmentBatteryPartName] [NVARCHAR](65) NOT NULL,
+ [AssessmentIdentifier] [NVARCHAR](60) NOT NULL,
+ [AssigningEducationOrganizationId] [BIGINT] NOT NULL,
+ [EducationOrganizationId] [BIGINT] NOT NULL,
+ [Namespace] [NVARCHAR](255) NOT NULL,
+ [StudentUSI] [INT] NOT NULL,
+ [Discriminator] [NVARCHAR](128) NULL,
+ [CreateDate] [DATETIME2] NOT NULL,
+ [LastModifiedDate] [DATETIME2] NOT NULL,
+ [Id] [UNIQUEIDENTIFIER] NOT NULL,
+ CONSTRAINT [StudentAssessmentRegistrationBatteryPartAssociation_PK] PRIMARY KEY CLUSTERED (
+ [AdministrationIdentifier] ASC,
+ [AssessmentBatteryPartName] ASC,
+ [AssessmentIdentifier] ASC,
+ [AssigningEducationOrganizationId] ASC,
+ [EducationOrganizationId] ASC,
+ [Namespace] ASC,
+ [StudentUSI] ASC
+ ) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
+) ON [PRIMARY]
+GO
+ALTER TABLE [edfi].[StudentAssessmentRegistrationBatteryPartAssociation] ADD CONSTRAINT [StudentAssessmentRegistrationBatteryPartAssociation_DF_CreateDate] DEFAULT (getutcdate()) FOR [CreateDate]
+GO
+ALTER TABLE [edfi].[StudentAssessmentRegistrationBatteryPartAssociation] ADD CONSTRAINT [StudentAssessmentRegistrationBatteryPartAssociation_DF_Id] DEFAULT (newid()) FOR [Id]
+GO
+ALTER TABLE [edfi].[StudentAssessmentRegistrationBatteryPartAssociation] ADD CONSTRAINT [StudentAssessmentRegistrationBatteryPartAssociation_DF_LastModifiedDate] DEFAULT (getutcdate()) FOR [LastModifiedDate]
+GO
+
+-- Table [edfi].[StudentAssessmentRegistrationBatteryPartAssociationAccommodation] --
+CREATE TABLE [edfi].[StudentAssessmentRegistrationBatteryPartAssociationAccommodation] (
+ [AdministrationIdentifier] [NVARCHAR](255) NOT NULL,
+ [AssessmentBatteryPartName] [NVARCHAR](65) NOT NULL,
+ [AssessmentIdentifier] [NVARCHAR](60) NOT NULL,
+ [AssigningEducationOrganizationId] [BIGINT] NOT NULL,
+ [EducationOrganizationId] [BIGINT] NOT NULL,
+ [Namespace] [NVARCHAR](255) NOT NULL,
+ [StudentUSI] [INT] NOT NULL,
+ [AccommodationDescriptorId] [INT] NOT NULL,
+ [CreateDate] [DATETIME2] NOT NULL,
+ CONSTRAINT [StudentAssessmentRegistrationBatteryPartAssociationAccommodation_PK] PRIMARY KEY CLUSTERED (
+ [AdministrationIdentifier] ASC,
+ [AssessmentBatteryPartName] ASC,
+ [AssessmentIdentifier] ASC,
+ [AssigningEducationOrganizationId] ASC,
+ [EducationOrganizationId] ASC,
+ [Namespace] ASC,
+ [StudentUSI] ASC,
+ [AccommodationDescriptorId] ASC
+ ) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
+) ON [PRIMARY]
+GO
+ALTER TABLE [edfi].[StudentAssessmentRegistrationBatteryPartAssociationAccommodation] ADD CONSTRAINT [StudentAssessmentRegistrationBatteryPartAssociationAccommodation_DF_CreateDate] DEFAULT (getutcdate()) FOR [CreateDate]
+GO
+
-- Table [edfi].[StudentAssessmentScoreResult] --
CREATE TABLE [edfi].[StudentAssessmentScoreResult] (
[AssessmentIdentifier] [NVARCHAR](60) NOT NULL,
@@ -8266,6 +8577,43 @@ GO
ALTER TABLE [edfi].[StudentDisciplineIncidentNonOffenderAssociationDisciplineIncidentParticipationCode] ADD CONSTRAINT [StudentDisciplineIncidentNonOffenderAssociationDisciplineIncidentParticipationCode_DF_CreateDate] DEFAULT (getutcdate()) FOR [CreateDate]
GO
+-- Table [edfi].[StudentEducationOrganizationAssessmentAccommodation] --
+CREATE TABLE [edfi].[StudentEducationOrganizationAssessmentAccommodation] (
+ [EducationOrganizationId] [BIGINT] NOT NULL,
+ [StudentUSI] [INT] NOT NULL,
+ [Discriminator] [NVARCHAR](128) NULL,
+ [CreateDate] [DATETIME2] NOT NULL,
+ [LastModifiedDate] [DATETIME2] NOT NULL,
+ [Id] [UNIQUEIDENTIFIER] NOT NULL,
+ CONSTRAINT [StudentEducationOrganizationAssessmentAccommodation_PK] PRIMARY KEY CLUSTERED (
+ [EducationOrganizationId] ASC,
+ [StudentUSI] ASC
+ ) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
+) ON [PRIMARY]
+GO
+ALTER TABLE [edfi].[StudentEducationOrganizationAssessmentAccommodation] ADD CONSTRAINT [StudentEducationOrganizationAssessmentAccommodation_DF_CreateDate] DEFAULT (getutcdate()) FOR [CreateDate]
+GO
+ALTER TABLE [edfi].[StudentEducationOrganizationAssessmentAccommodation] ADD CONSTRAINT [StudentEducationOrganizationAssessmentAccommodation_DF_Id] DEFAULT (newid()) FOR [Id]
+GO
+ALTER TABLE [edfi].[StudentEducationOrganizationAssessmentAccommodation] ADD CONSTRAINT [StudentEducationOrganizationAssessmentAccommodation_DF_LastModifiedDate] DEFAULT (getutcdate()) FOR [LastModifiedDate]
+GO
+
+-- Table [edfi].[StudentEducationOrganizationAssessmentAccommodationGeneralAccommodation] --
+CREATE TABLE [edfi].[StudentEducationOrganizationAssessmentAccommodationGeneralAccommodation] (
+ [EducationOrganizationId] [BIGINT] NOT NULL,
+ [StudentUSI] [INT] NOT NULL,
+ [AccommodationDescriptorId] [INT] NOT NULL,
+ [CreateDate] [DATETIME2] NOT NULL,
+ CONSTRAINT [StudentEducationOrganizationAssessmentAccommodationGeneralAccommodation_PK] PRIMARY KEY CLUSTERED (
+ [EducationOrganizationId] ASC,
+ [StudentUSI] ASC,
+ [AccommodationDescriptorId] ASC
+ ) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
+) ON [PRIMARY]
+GO
+ALTER TABLE [edfi].[StudentEducationOrganizationAssessmentAccommodationGeneralAccommodation] ADD CONSTRAINT [StudentEducationOrganizationAssessmentAccommodationGeneralAccommodation_DF_CreateDate] DEFAULT (getutcdate()) FOR [CreateDate]
+GO
+
-- Table [edfi].[StudentEducationOrganizationAssociation] --
CREATE TABLE [edfi].[StudentEducationOrganizationAssociation] (
[EducationOrganizationId] [BIGINT] NOT NULL,
@@ -9587,6 +9935,30 @@ GO
ALTER TABLE [edfi].[StudentSchoolFoodServiceProgramAssociationSchoolFoodServiceProgramService] ADD CONSTRAINT [StudentSchoolFoodServiceProgramAssociationSchoolFoodServiceProgramService_DF_CreateDate] DEFAULT (getutcdate()) FOR [CreateDate]
GO
+-- Table [edfi].[StudentSection504ProgramAssociation] --
+CREATE TABLE [edfi].[StudentSection504ProgramAssociation] (
+ [BeginDate] [DATE] NOT NULL,
+ [EducationOrganizationId] [BIGINT] NOT NULL,
+ [ProgramEducationOrganizationId] [BIGINT] NOT NULL,
+ [ProgramName] [NVARCHAR](60) NOT NULL,
+ [ProgramTypeDescriptorId] [INT] NOT NULL,
+ [StudentUSI] [INT] NOT NULL,
+ [AccommodationPlan] [BIT] NULL,
+ [Section504DisabilityTypeDescriptorId] [INT] NULL,
+ [Section504Eligibility] [BIT] NOT NULL,
+ [Section504EligibilityDecisionDate] [DATE] NULL,
+ [Section504MeetingDate] [DATE] NULL,
+ CONSTRAINT [StudentSection504ProgramAssociation_PK] PRIMARY KEY CLUSTERED (
+ [BeginDate] ASC,
+ [EducationOrganizationId] ASC,
+ [ProgramEducationOrganizationId] ASC,
+ [ProgramName] ASC,
+ [ProgramTypeDescriptorId] ASC,
+ [StudentUSI] ASC
+ ) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
+) ON [PRIMARY]
+GO
+
-- Table [edfi].[StudentSectionAssociation] --
CREATE TABLE [edfi].[StudentSectionAssociation] (
[BeginDate] [DATE] NOT NULL,
@@ -9888,6 +10260,7 @@ GO
CREATE TABLE [edfi].[StudentSpecialEducationProgramEligibilityAssociation] (
[ConsentToEvaluationReceivedDate] [DATE] NOT NULL,
[EducationOrganizationId] [BIGINT] NOT NULL,
+ [ProgramEducationOrganizationId] [BIGINT] NOT NULL,
[ProgramName] [NVARCHAR](60) NOT NULL,
[ProgramTypeDescriptorId] [INT] NOT NULL,
[StudentUSI] [INT] NOT NULL,
@@ -9913,6 +10286,7 @@ CREATE TABLE [edfi].[StudentSpecialEducationProgramEligibilityAssociation] (
CONSTRAINT [StudentSpecialEducationProgramEligibilityAssociation_PK] PRIMARY KEY CLUSTERED (
[ConsentToEvaluationReceivedDate] ASC,
[EducationOrganizationId] ASC,
+ [ProgramEducationOrganizationId] ASC,
[ProgramName] ASC,
[ProgramTypeDescriptorId] ASC,
[StudentUSI] ASC
diff --git a/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/MsSql/Structure/Ods/0030-ForeignKeys.sql b/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/MsSql/Structure/Ods/0030-ForeignKeys.sql
index 8e5588d368..6f170a070b 100644
--- a/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/MsSql/Structure/Ods/0030-ForeignKeys.sql
+++ b/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/MsSql/Structure/Ods/0030-ForeignKeys.sql
@@ -99,6 +99,40 @@ REFERENCES [edfi].[Assessment] ([AssessmentIdentifier], [Namespace])
ON DELETE CASCADE
GO
+ALTER TABLE [edfi].[AssessmentAdministration] WITH CHECK ADD CONSTRAINT [FK_AssessmentAdministration_Assessment] FOREIGN KEY ([AssessmentIdentifier], [Namespace])
+REFERENCES [edfi].[Assessment] ([AssessmentIdentifier], [Namespace])
+GO
+
+CREATE NONCLUSTERED INDEX [FK_AssessmentAdministration_Assessment]
+ON [edfi].[AssessmentAdministration] ([AssessmentIdentifier] ASC, [Namespace] ASC)
+GO
+
+ALTER TABLE [edfi].[AssessmentAdministration] WITH CHECK ADD CONSTRAINT [FK_AssessmentAdministration_EducationOrganization] FOREIGN KEY ([AssigningEducationOrganizationId])
+REFERENCES [edfi].[EducationOrganization] ([EducationOrganizationId])
+GO
+
+CREATE NONCLUSTERED INDEX [FK_AssessmentAdministration_EducationOrganization]
+ON [edfi].[AssessmentAdministration] ([AssigningEducationOrganizationId] ASC)
+GO
+
+ALTER TABLE [edfi].[AssessmentAdministrationAssessmentAdminstrationPeriod] WITH CHECK ADD CONSTRAINT [FK_AssessmentAdministrationAssessmentAdminstrationPeriod_AssessmentAdministration] FOREIGN KEY ([AdministrationIdentifier], [AssessmentIdentifier], [AssigningEducationOrganizationId], [Namespace])
+REFERENCES [edfi].[AssessmentAdministration] ([AdministrationIdentifier], [AssessmentIdentifier], [AssigningEducationOrganizationId], [Namespace])
+ON DELETE CASCADE
+GO
+
+ALTER TABLE [edfi].[AssessmentAdministrationAssessmentBatteryPart] WITH CHECK ADD CONSTRAINT [FK_AssessmentAdministrationAssessmentBatteryPart_AssessmentAdministration] FOREIGN KEY ([AdministrationIdentifier], [AssessmentIdentifier], [AssigningEducationOrganizationId], [Namespace])
+REFERENCES [edfi].[AssessmentAdministration] ([AdministrationIdentifier], [AssessmentIdentifier], [AssigningEducationOrganizationId], [Namespace])
+ON DELETE CASCADE
+GO
+
+ALTER TABLE [edfi].[AssessmentAdministrationAssessmentBatteryPart] WITH CHECK ADD CONSTRAINT [FK_AssessmentAdministrationAssessmentBatteryPart_AssessmentBatteryPart] FOREIGN KEY ([AssessmentBatteryPartName], [AssessmentIdentifier], [Namespace])
+REFERENCES [edfi].[AssessmentBatteryPart] ([AssessmentBatteryPartName], [AssessmentIdentifier], [Namespace])
+GO
+
+CREATE NONCLUSTERED INDEX [FK_AssessmentAdministrationAssessmentBatteryPart_AssessmentBatteryPart]
+ON [edfi].[AssessmentAdministrationAssessmentBatteryPart] ([AssessmentBatteryPartName] ASC, [AssessmentIdentifier] ASC, [Namespace] ASC)
+GO
+
ALTER TABLE [edfi].[AssessmentAssessedGradeLevel] WITH CHECK ADD CONSTRAINT [FK_AssessmentAssessedGradeLevel_Assessment] FOREIGN KEY ([AssessmentIdentifier], [Namespace])
REFERENCES [edfi].[Assessment] ([AssessmentIdentifier], [Namespace])
ON DELETE CASCADE
@@ -112,6 +146,27 @@ CREATE NONCLUSTERED INDEX [FK_AssessmentAssessedGradeLevel_GradeLevelDescriptor]
ON [edfi].[AssessmentAssessedGradeLevel] ([GradeLevelDescriptorId] ASC)
GO
+ALTER TABLE [edfi].[AssessmentBatteryPart] WITH CHECK ADD CONSTRAINT [FK_AssessmentBatteryPart_Assessment] FOREIGN KEY ([AssessmentIdentifier], [Namespace])
+REFERENCES [edfi].[Assessment] ([AssessmentIdentifier], [Namespace])
+GO
+
+CREATE NONCLUSTERED INDEX [FK_AssessmentBatteryPart_Assessment]
+ON [edfi].[AssessmentBatteryPart] ([AssessmentIdentifier] ASC, [Namespace] ASC)
+GO
+
+ALTER TABLE [edfi].[AssessmentBatteryPartObjectiveAssessment] WITH CHECK ADD CONSTRAINT [FK_AssessmentBatteryPartObjectiveAssessment_AssessmentBatteryPart] FOREIGN KEY ([AssessmentBatteryPartName], [AssessmentIdentifier], [Namespace])
+REFERENCES [edfi].[AssessmentBatteryPart] ([AssessmentBatteryPartName], [AssessmentIdentifier], [Namespace])
+ON DELETE CASCADE
+GO
+
+ALTER TABLE [edfi].[AssessmentBatteryPartObjectiveAssessment] WITH CHECK ADD CONSTRAINT [FK_AssessmentBatteryPartObjectiveAssessment_ObjectiveAssessment] FOREIGN KEY ([AssessmentIdentifier], [IdentificationCode], [Namespace])
+REFERENCES [edfi].[ObjectiveAssessment] ([AssessmentIdentifier], [IdentificationCode], [Namespace])
+GO
+
+CREATE NONCLUSTERED INDEX [FK_AssessmentBatteryPartObjectiveAssessment_ObjectiveAssessment]
+ON [edfi].[AssessmentBatteryPartObjectiveAssessment] ([AssessmentIdentifier] ASC, [IdentificationCode] ASC, [Namespace] ASC)
+GO
+
ALTER TABLE [edfi].[AssessmentCategoryDescriptor] WITH CHECK ADD CONSTRAINT [FK_AssessmentCategoryDescriptor_Descriptor] FOREIGN KEY ([AssessmentCategoryDescriptorId])
REFERENCES [edfi].[Descriptor] ([DescriptorId])
ON DELETE CASCADE
@@ -368,6 +423,35 @@ CREATE NONCLUSTERED INDEX [FK_AssessmentSection_Section]
ON [edfi].[AssessmentSection] ([LocalCourseCode] ASC, [SchoolId] ASC, [SchoolYear] ASC, [SectionIdentifier] ASC, [SessionName] ASC)
GO
+ALTER TABLE [edfi].[AssesssmentAdministrationParticipation] WITH CHECK ADD CONSTRAINT [FK_AssesssmentAdministrationParticipation_AssessmentAdministration] FOREIGN KEY ([AdministrationIdentifier], [AssessmentIdentifier], [AssigningEducationOrganizationId], [Namespace])
+REFERENCES [edfi].[AssessmentAdministration] ([AdministrationIdentifier], [AssessmentIdentifier], [AssigningEducationOrganizationId], [Namespace])
+GO
+
+CREATE NONCLUSTERED INDEX [FK_AssesssmentAdministrationParticipation_AssessmentAdministration]
+ON [edfi].[AssesssmentAdministrationParticipation] ([AdministrationIdentifier] ASC, [AssessmentIdentifier] ASC, [AssigningEducationOrganizationId] ASC, [Namespace] ASC)
+GO
+
+ALTER TABLE [edfi].[AssesssmentAdministrationParticipation] WITH CHECK ADD CONSTRAINT [FK_AssesssmentAdministrationParticipation_EducationOrganization] FOREIGN KEY ([ParticipatingEducationOrganizationId])
+REFERENCES [edfi].[EducationOrganization] ([EducationOrganizationId])
+GO
+
+CREATE NONCLUSTERED INDEX [FK_AssesssmentAdministrationParticipation_EducationOrganization]
+ON [edfi].[AssesssmentAdministrationParticipation] ([ParticipatingEducationOrganizationId] ASC)
+GO
+
+ALTER TABLE [edfi].[AssesssmentAdministrationParticipationAdministrationPointOfContact] WITH CHECK ADD CONSTRAINT [FK_AssesssmentAdministrationParticipationAdministrationPointOfContact_AssesssmentAdministrationParticipation] FOREIGN KEY ([AdministrationIdentifier], [AssessmentIdentifier], [AssigningEducationOrganizationId], [Namespace], [ParticipatingEducationOrganizationId])
+REFERENCES [edfi].[AssesssmentAdministrationParticipation] ([AdministrationIdentifier], [AssessmentIdentifier], [AssigningEducationOrganizationId], [Namespace], [ParticipatingEducationOrganizationId])
+ON DELETE CASCADE
+GO
+
+ALTER TABLE [edfi].[AssesssmentAdministrationParticipationAdministrationPointOfContact] WITH CHECK ADD CONSTRAINT [FK_AssesssmentAdministrationParticipationAdministrationPointOfContact_EducationOrganization] FOREIGN KEY ([EducationOrganizationId])
+REFERENCES [edfi].[EducationOrganization] ([EducationOrganizationId])
+GO
+
+CREATE NONCLUSTERED INDEX [FK_AssesssmentAdministrationParticipationAdministrationPointOfContact_EducationOrganization]
+ON [edfi].[AssesssmentAdministrationParticipationAdministrationPointOfContact] ([EducationOrganizationId] ASC)
+GO
+
ALTER TABLE [edfi].[AssignmentLateStatusDescriptor] WITH CHECK ADD CONSTRAINT [FK_AssignmentLateStatusDescriptor_Descriptor] FOREIGN KEY ([AssignmentLateStatusDescriptorId])
REFERENCES [edfi].[Descriptor] ([DescriptorId])
ON DELETE CASCADE
@@ -4286,6 +4370,11 @@ CREATE NONCLUSTERED INDEX [FK_Section_SectionTypeDescriptor]
ON [edfi].[Section] ([SectionTypeDescriptorId] ASC)
GO
+ALTER TABLE [edfi].[Section504DisabilityTypeDescriptor] WITH CHECK ADD CONSTRAINT [FK_Section504DisabilityTypeDescriptor_Descriptor] FOREIGN KEY ([Section504DisabilityTypeDescriptorId])
+REFERENCES [edfi].[Descriptor] ([DescriptorId])
+ON DELETE CASCADE
+GO
+
ALTER TABLE [edfi].[SectionAttendanceTakenEvent] WITH CHECK ADD CONSTRAINT [FK_SectionAttendanceTakenEvent_CalendarDate] FOREIGN KEY ([CalendarCode], [Date], [SchoolId], [SchoolYear])
REFERENCES [edfi].[CalendarDate] ([CalendarCode], [Date], [SchoolId], [SchoolYear])
GO
@@ -5566,6 +5655,118 @@ REFERENCES [edfi].[StudentAssessment] ([AssessmentIdentifier], [Namespace], [Stu
ON DELETE CASCADE
GO
+ALTER TABLE [edfi].[StudentAssessmentRegistration] WITH CHECK ADD CONSTRAINT [FK_StudentAssessmentRegistration_AssessmentAdministration] FOREIGN KEY ([AdministrationIdentifier], [AssessmentIdentifier], [AssigningEducationOrganizationId], [Namespace])
+REFERENCES [edfi].[AssessmentAdministration] ([AdministrationIdentifier], [AssessmentIdentifier], [AssigningEducationOrganizationId], [Namespace])
+GO
+
+CREATE NONCLUSTERED INDEX [FK_StudentAssessmentRegistration_AssessmentAdministration]
+ON [edfi].[StudentAssessmentRegistration] ([AdministrationIdentifier] ASC, [AssessmentIdentifier] ASC, [AssigningEducationOrganizationId] ASC, [Namespace] ASC)
+GO
+
+ALTER TABLE [edfi].[StudentAssessmentRegistration] WITH CHECK ADD CONSTRAINT [FK_StudentAssessmentRegistration_EducationOrganization] FOREIGN KEY ([ReportingEducationOrganizationId])
+REFERENCES [edfi].[EducationOrganization] ([EducationOrganizationId])
+GO
+
+CREATE NONCLUSTERED INDEX [FK_StudentAssessmentRegistration_EducationOrganization]
+ON [edfi].[StudentAssessmentRegistration] ([ReportingEducationOrganizationId] ASC)
+GO
+
+ALTER TABLE [edfi].[StudentAssessmentRegistration] WITH CHECK ADD CONSTRAINT [FK_StudentAssessmentRegistration_EducationOrganization1] FOREIGN KEY ([TestingEducationOrganizationId])
+REFERENCES [edfi].[EducationOrganization] ([EducationOrganizationId])
+GO
+
+CREATE NONCLUSTERED INDEX [FK_StudentAssessmentRegistration_EducationOrganization1]
+ON [edfi].[StudentAssessmentRegistration] ([TestingEducationOrganizationId] ASC)
+GO
+
+ALTER TABLE [edfi].[StudentAssessmentRegistration] WITH CHECK ADD CONSTRAINT [FK_StudentAssessmentRegistration_GradeLevelDescriptor] FOREIGN KEY ([AssessmentGradeLevelDescriptorId])
+REFERENCES [edfi].[GradeLevelDescriptor] ([GradeLevelDescriptorId])
+GO
+
+CREATE NONCLUSTERED INDEX [FK_StudentAssessmentRegistration_GradeLevelDescriptor]
+ON [edfi].[StudentAssessmentRegistration] ([AssessmentGradeLevelDescriptorId] ASC)
+GO
+
+ALTER TABLE [edfi].[StudentAssessmentRegistration] WITH CHECK ADD CONSTRAINT [FK_StudentAssessmentRegistration_PlatformTypeDescriptor] FOREIGN KEY ([PlatformTypeDescriptorId])
+REFERENCES [edfi].[PlatformTypeDescriptor] ([PlatformTypeDescriptorId])
+GO
+
+CREATE NONCLUSTERED INDEX [FK_StudentAssessmentRegistration_PlatformTypeDescriptor]
+ON [edfi].[StudentAssessmentRegistration] ([PlatformTypeDescriptorId] ASC)
+GO
+
+ALTER TABLE [edfi].[StudentAssessmentRegistration] WITH CHECK ADD CONSTRAINT [FK_StudentAssessmentRegistration_StudentEducationOrganizationAssessmentAccommodation] FOREIGN KEY ([EducationOrganizationId], [StudentUSI])
+REFERENCES [edfi].[StudentEducationOrganizationAssessmentAccommodation] ([EducationOrganizationId], [StudentUSI])
+GO
+
+CREATE NONCLUSTERED INDEX [FK_StudentAssessmentRegistration_StudentEducationOrganizationAssessmentAccommodation]
+ON [edfi].[StudentAssessmentRegistration] ([EducationOrganizationId] ASC, [StudentUSI] ASC)
+GO
+
+ALTER TABLE [edfi].[StudentAssessmentRegistration] WITH CHECK ADD CONSTRAINT [FK_StudentAssessmentRegistration_StudentEducationOrganizationAssociation] FOREIGN KEY ([EducationOrganizationId], [StudentUSI])
+REFERENCES [edfi].[StudentEducationOrganizationAssociation] ([EducationOrganizationId], [StudentUSI])
+GO
+
+CREATE NONCLUSTERED INDEX [FK_StudentAssessmentRegistration_StudentEducationOrganizationAssociation]
+ON [edfi].[StudentAssessmentRegistration] ([EducationOrganizationId] ASC, [StudentUSI] ASC)
+GO
+
+ALTER TABLE [edfi].[StudentAssessmentRegistration] WITH CHECK ADD CONSTRAINT [FK_StudentAssessmentRegistration_StudentSchoolAssociation] FOREIGN KEY ([EntryDate], [SchoolId], [StudentUSI])
+REFERENCES [edfi].[StudentSchoolAssociation] ([EntryDate], [SchoolId], [StudentUSI])
+ON UPDATE CASCADE
+GO
+
+CREATE NONCLUSTERED INDEX [FK_StudentAssessmentRegistration_StudentSchoolAssociation]
+ON [edfi].[StudentAssessmentRegistration] ([EntryDate] ASC, [SchoolId] ASC, [StudentUSI] ASC)
+GO
+
+ALTER TABLE [edfi].[StudentAssessmentRegistrationAssessmentAccommodation] WITH CHECK ADD CONSTRAINT [FK_StudentAssessmentRegistrationAssessmentAccommodation_AccommodationDescriptor] FOREIGN KEY ([AccommodationDescriptorId])
+REFERENCES [edfi].[AccommodationDescriptor] ([AccommodationDescriptorId])
+GO
+
+CREATE NONCLUSTERED INDEX [FK_StudentAssessmentRegistrationAssessmentAccommodation_AccommodationDescriptor]
+ON [edfi].[StudentAssessmentRegistrationAssessmentAccommodation] ([AccommodationDescriptorId] ASC)
+GO
+
+ALTER TABLE [edfi].[StudentAssessmentRegistrationAssessmentAccommodation] WITH CHECK ADD CONSTRAINT [FK_StudentAssessmentRegistrationAssessmentAccommodation_StudentAssessmentRegistration] FOREIGN KEY ([AdministrationIdentifier], [AssessmentIdentifier], [AssigningEducationOrganizationId], [EducationOrganizationId], [Namespace], [StudentUSI])
+REFERENCES [edfi].[StudentAssessmentRegistration] ([AdministrationIdentifier], [AssessmentIdentifier], [AssigningEducationOrganizationId], [EducationOrganizationId], [Namespace], [StudentUSI])
+ON DELETE CASCADE
+GO
+
+ALTER TABLE [edfi].[StudentAssessmentRegistrationAssessmentCustomization] WITH CHECK ADD CONSTRAINT [FK_StudentAssessmentRegistrationAssessmentCustomization_StudentAssessmentRegistration] FOREIGN KEY ([AdministrationIdentifier], [AssessmentIdentifier], [AssigningEducationOrganizationId], [EducationOrganizationId], [Namespace], [StudentUSI])
+REFERENCES [edfi].[StudentAssessmentRegistration] ([AdministrationIdentifier], [AssessmentIdentifier], [AssigningEducationOrganizationId], [EducationOrganizationId], [Namespace], [StudentUSI])
+ON DELETE CASCADE
+GO
+
+ALTER TABLE [edfi].[StudentAssessmentRegistrationBatteryPartAssociation] WITH CHECK ADD CONSTRAINT [FK_StudentAssessmentRegistrationBatteryPartAssociation_AssessmentBatteryPart] FOREIGN KEY ([AssessmentBatteryPartName], [AssessmentIdentifier], [Namespace])
+REFERENCES [edfi].[AssessmentBatteryPart] ([AssessmentBatteryPartName], [AssessmentIdentifier], [Namespace])
+GO
+
+CREATE NONCLUSTERED INDEX [FK_StudentAssessmentRegistrationBatteryPartAssociation_AssessmentBatteryPart]
+ON [edfi].[StudentAssessmentRegistrationBatteryPartAssociation] ([AssessmentBatteryPartName] ASC, [AssessmentIdentifier] ASC, [Namespace] ASC)
+GO
+
+ALTER TABLE [edfi].[StudentAssessmentRegistrationBatteryPartAssociation] WITH CHECK ADD CONSTRAINT [FK_StudentAssessmentRegistrationBatteryPartAssociation_StudentAssessmentRegistration] FOREIGN KEY ([AdministrationIdentifier], [AssessmentIdentifier], [AssigningEducationOrganizationId], [EducationOrganizationId], [Namespace], [StudentUSI])
+REFERENCES [edfi].[StudentAssessmentRegistration] ([AdministrationIdentifier], [AssessmentIdentifier], [AssigningEducationOrganizationId], [EducationOrganizationId], [Namespace], [StudentUSI])
+GO
+
+CREATE NONCLUSTERED INDEX [FK_StudentAssessmentRegistrationBatteryPartAssociation_StudentAssessmentRegistration]
+ON [edfi].[StudentAssessmentRegistrationBatteryPartAssociation] ([AdministrationIdentifier] ASC, [AssessmentIdentifier] ASC, [AssigningEducationOrganizationId] ASC, [EducationOrganizationId] ASC, [Namespace] ASC, [StudentUSI] ASC)
+GO
+
+ALTER TABLE [edfi].[StudentAssessmentRegistrationBatteryPartAssociationAccommodation] WITH CHECK ADD CONSTRAINT [FK_StudentAssessmentRegistrationBatteryPartAssociationAccommodation_AccommodationDescriptor] FOREIGN KEY ([AccommodationDescriptorId])
+REFERENCES [edfi].[AccommodationDescriptor] ([AccommodationDescriptorId])
+GO
+
+CREATE NONCLUSTERED INDEX [FK_StudentAssessmentRegistrationBatteryPartAssociationAccommodation_AccommodationDescriptor]
+ON [edfi].[StudentAssessmentRegistrationBatteryPartAssociationAccommodation] ([AccommodationDescriptorId] ASC)
+GO
+
+ALTER TABLE [edfi].[StudentAssessmentRegistrationBatteryPartAssociationAccommodation] WITH CHECK ADD CONSTRAINT [FK_StudentAssessmentRegistrationBatteryPartAssociationAccommodation_StudentAssessmentRegistrationBatteryPartAssociation] FOREIGN KEY ([AdministrationIdentifier], [AssessmentBatteryPartName], [AssessmentIdentifier], [AssigningEducationOrganizationId], [EducationOrganizationId], [Namespace], [StudentUSI])
+REFERENCES [edfi].[StudentAssessmentRegistrationBatteryPartAssociation] ([AdministrationIdentifier], [AssessmentBatteryPartName], [AssessmentIdentifier], [AssigningEducationOrganizationId], [EducationOrganizationId], [Namespace], [StudentUSI])
+ON DELETE CASCADE
+GO
+
ALTER TABLE [edfi].[StudentAssessmentScoreResult] WITH CHECK ADD CONSTRAINT [FK_StudentAssessmentScoreResult_AssessmentReportingMethodDescriptor] FOREIGN KEY ([AssessmentReportingMethodDescriptorId])
REFERENCES [edfi].[AssessmentReportingMethodDescriptor] ([AssessmentReportingMethodDescriptorId])
GO
@@ -5852,6 +6053,31 @@ REFERENCES [edfi].[StudentDisciplineIncidentNonOffenderAssociation] ([IncidentId
ON DELETE CASCADE
GO
+ALTER TABLE [edfi].[StudentEducationOrganizationAssessmentAccommodation] WITH CHECK ADD CONSTRAINT [FK_StudentEducationOrganizationAssessmentAccommodation_EducationOrganization] FOREIGN KEY ([EducationOrganizationId])
+REFERENCES [edfi].[EducationOrganization] ([EducationOrganizationId])
+GO
+
+ALTER TABLE [edfi].[StudentEducationOrganizationAssessmentAccommodation] WITH CHECK ADD CONSTRAINT [FK_StudentEducationOrganizationAssessmentAccommodation_Student] FOREIGN KEY ([StudentUSI])
+REFERENCES [edfi].[Student] ([StudentUSI])
+GO
+
+CREATE NONCLUSTERED INDEX [FK_StudentEducationOrganizationAssessmentAccommodation_Student]
+ON [edfi].[StudentEducationOrganizationAssessmentAccommodation] ([StudentUSI] ASC)
+GO
+
+ALTER TABLE [edfi].[StudentEducationOrganizationAssessmentAccommodationGeneralAccommodation] WITH CHECK ADD CONSTRAINT [FK_StudentEducationOrganizationAssessmentAccommodationGeneralAccommodation_AccommodationDescriptor] FOREIGN KEY ([AccommodationDescriptorId])
+REFERENCES [edfi].[AccommodationDescriptor] ([AccommodationDescriptorId])
+GO
+
+CREATE NONCLUSTERED INDEX [FK_StudentEducationOrganizationAssessmentAccommodationGeneralAccommodation_AccommodationDescriptor]
+ON [edfi].[StudentEducationOrganizationAssessmentAccommodationGeneralAccommodation] ([AccommodationDescriptorId] ASC)
+GO
+
+ALTER TABLE [edfi].[StudentEducationOrganizationAssessmentAccommodationGeneralAccommodation] WITH CHECK ADD CONSTRAINT [FK_StudentEducationOrganizationAssessmentAccommodationGeneralAccommodation_StudentEducationOrganizationAssessmentAccommodation] FOREIGN KEY ([EducationOrganizationId], [StudentUSI])
+REFERENCES [edfi].[StudentEducationOrganizationAssessmentAccommodation] ([EducationOrganizationId], [StudentUSI])
+ON DELETE CASCADE
+GO
+
ALTER TABLE [edfi].[StudentEducationOrganizationAssociation] WITH CHECK ADD CONSTRAINT [FK_StudentEducationOrganizationAssociation_BarrierToInternetAccessInResidenceDescriptor] FOREIGN KEY ([BarrierToInternetAccessInResidenceDescriptorId])
REFERENCES [edfi].[BarrierToInternetAccessInResidenceDescriptor] ([BarrierToInternetAccessInResidenceDescriptorId])
GO
@@ -6978,6 +7204,19 @@ REFERENCES [edfi].[StudentSchoolFoodServiceProgramAssociation] ([BeginDate], [Ed
ON DELETE CASCADE
GO
+ALTER TABLE [edfi].[StudentSection504ProgramAssociation] WITH CHECK ADD CONSTRAINT [FK_StudentSection504ProgramAssociation_GeneralStudentProgramAssociation] FOREIGN KEY ([BeginDate], [EducationOrganizationId], [ProgramEducationOrganizationId], [ProgramName], [ProgramTypeDescriptorId], [StudentUSI])
+REFERENCES [edfi].[GeneralStudentProgramAssociation] ([BeginDate], [EducationOrganizationId], [ProgramEducationOrganizationId], [ProgramName], [ProgramTypeDescriptorId], [StudentUSI])
+ON DELETE CASCADE
+GO
+
+ALTER TABLE [edfi].[StudentSection504ProgramAssociation] WITH CHECK ADD CONSTRAINT [FK_StudentSection504ProgramAssociation_Section504DisabilityTypeDescriptor] FOREIGN KEY ([Section504DisabilityTypeDescriptorId])
+REFERENCES [edfi].[Section504DisabilityTypeDescriptor] ([Section504DisabilityTypeDescriptorId])
+GO
+
+CREATE NONCLUSTERED INDEX [FK_StudentSection504ProgramAssociation_Section504DisabilityTypeDescriptor]
+ON [edfi].[StudentSection504ProgramAssociation] ([Section504DisabilityTypeDescriptorId] ASC)
+GO
+
ALTER TABLE [edfi].[StudentSectionAssociation] WITH CHECK ADD CONSTRAINT [FK_StudentSectionAssociation_AttemptStatusDescriptor] FOREIGN KEY ([AttemptStatusDescriptorId])
REFERENCES [edfi].[AttemptStatusDescriptor] ([AttemptStatusDescriptorId])
GO
@@ -7203,12 +7442,12 @@ CREATE NONCLUSTERED INDEX [FK_StudentSpecialEducationProgramEligibilityAssociati
ON [edfi].[StudentSpecialEducationProgramEligibilityAssociation] ([IDEAPartDescriptorId] ASC)
GO
-ALTER TABLE [edfi].[StudentSpecialEducationProgramEligibilityAssociation] WITH CHECK ADD CONSTRAINT [FK_StudentSpecialEducationProgramEligibilityAssociation_Program] FOREIGN KEY ([EducationOrganizationId], [ProgramName], [ProgramTypeDescriptorId])
+ALTER TABLE [edfi].[StudentSpecialEducationProgramEligibilityAssociation] WITH CHECK ADD CONSTRAINT [FK_StudentSpecialEducationProgramEligibilityAssociation_Program] FOREIGN KEY ([ProgramEducationOrganizationId], [ProgramName], [ProgramTypeDescriptorId])
REFERENCES [edfi].[Program] ([EducationOrganizationId], [ProgramName], [ProgramTypeDescriptorId])
GO
CREATE NONCLUSTERED INDEX [FK_StudentSpecialEducationProgramEligibilityAssociation_Program]
-ON [edfi].[StudentSpecialEducationProgramEligibilityAssociation] ([EducationOrganizationId] ASC, [ProgramName] ASC, [ProgramTypeDescriptorId] ASC)
+ON [edfi].[StudentSpecialEducationProgramEligibilityAssociation] ([ProgramEducationOrganizationId] ASC, [ProgramName] ASC, [ProgramTypeDescriptorId] ASC)
GO
ALTER TABLE [edfi].[StudentSpecialEducationProgramEligibilityAssociation] WITH CHECK ADD CONSTRAINT [FK_StudentSpecialEducationProgramEligibilityAssociation_Student] FOREIGN KEY ([StudentUSI])
diff --git a/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/MsSql/Structure/Ods/0040-IdColumnUniqueIndexes.sql b/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/MsSql/Structure/Ods/0040-IdColumnUniqueIndexes.sql
index 087a9af577..dd3ea99cff 100644
--- a/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/MsSql/Structure/Ods/0040-IdColumnUniqueIndexes.sql
+++ b/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/MsSql/Structure/Ods/0040-IdColumnUniqueIndexes.sql
@@ -24,6 +24,20 @@ BEGIN TRANSACTION
GO
COMMIT
+BEGIN TRANSACTION
+ IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'edfi.AssessmentAdministration') AND name = N'UX_AssessmentAdministration_Id')
+ CREATE UNIQUE NONCLUSTERED INDEX UX_AssessmentAdministration_Id ON [edfi].[AssessmentAdministration]
+ (Id) WITH (PAD_INDEX = ON, FILLFACTOR = 75, STATISTICS_NORECOMPUTE = OFF) ON [PRIMARY]
+ GO
+COMMIT
+
+BEGIN TRANSACTION
+ IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'edfi.AssessmentBatteryPart') AND name = N'UX_AssessmentBatteryPart_Id')
+ CREATE UNIQUE NONCLUSTERED INDEX UX_AssessmentBatteryPart_Id ON [edfi].[AssessmentBatteryPart]
+ (Id) WITH (PAD_INDEX = ON, FILLFACTOR = 75, STATISTICS_NORECOMPUTE = OFF) ON [PRIMARY]
+ GO
+COMMIT
+
BEGIN TRANSACTION
IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'edfi.AssessmentItem') AND name = N'UX_AssessmentItem_Id')
CREATE UNIQUE NONCLUSTERED INDEX UX_AssessmentItem_Id ON [edfi].[AssessmentItem]
@@ -38,6 +52,13 @@ BEGIN TRANSACTION
GO
COMMIT
+BEGIN TRANSACTION
+ IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'edfi.AssesssmentAdministrationParticipation') AND name = N'UX_AssesssmentAdministrationParticipation_Id')
+ CREATE UNIQUE NONCLUSTERED INDEX UX_AssesssmentAdministrationParticipation_Id ON [edfi].[AssesssmentAdministrationParticipation]
+ (Id) WITH (PAD_INDEX = ON, FILLFACTOR = 75, STATISTICS_NORECOMPUTE = OFF) ON [PRIMARY]
+ GO
+COMMIT
+
BEGIN TRANSACTION
IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'edfi.BalanceSheetDimension') AND name = N'UX_BalanceSheetDimension_Id')
CREATE UNIQUE NONCLUSTERED INDEX UX_BalanceSheetDimension_Id ON [edfi].[BalanceSheetDimension]
@@ -591,6 +612,20 @@ BEGIN TRANSACTION
GO
COMMIT
+BEGIN TRANSACTION
+ IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'edfi.StudentAssessmentRegistration') AND name = N'UX_StudentAssessmentRegistration_Id')
+ CREATE UNIQUE NONCLUSTERED INDEX UX_StudentAssessmentRegistration_Id ON [edfi].[StudentAssessmentRegistration]
+ (Id) WITH (PAD_INDEX = ON, FILLFACTOR = 75, STATISTICS_NORECOMPUTE = OFF) ON [PRIMARY]
+ GO
+COMMIT
+
+BEGIN TRANSACTION
+ IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'edfi.StudentAssessmentRegistrationBatteryPartAssociation') AND name = N'UX_StudentAssessmentRegistrationBatteryPartAssociation_Id')
+ CREATE UNIQUE NONCLUSTERED INDEX UX_StudentAssessmentRegistrationBatteryPartAssociation_Id ON [edfi].[StudentAssessmentRegistrationBatteryPartAssociation]
+ (Id) WITH (PAD_INDEX = ON, FILLFACTOR = 75, STATISTICS_NORECOMPUTE = OFF) ON [PRIMARY]
+ GO
+COMMIT
+
BEGIN TRANSACTION
IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'edfi.StudentCohortAssociation') AND name = N'UX_StudentCohortAssociation_Id')
CREATE UNIQUE NONCLUSTERED INDEX UX_StudentCohortAssociation_Id ON [edfi].[StudentCohortAssociation]
@@ -626,6 +661,13 @@ BEGIN TRANSACTION
GO
COMMIT
+BEGIN TRANSACTION
+ IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'edfi.StudentEducationOrganizationAssessmentAccommodation') AND name = N'UX_StudentEducationOrganizationAssessmentAccommodation_Id')
+ CREATE UNIQUE NONCLUSTERED INDEX UX_StudentEducationOrganizationAssessmentAccommodation_Id ON [edfi].[StudentEducationOrganizationAssessmentAccommodation]
+ (Id) WITH (PAD_INDEX = ON, FILLFACTOR = 75, STATISTICS_NORECOMPUTE = OFF) ON [PRIMARY]
+ GO
+COMMIT
+
BEGIN TRANSACTION
IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'edfi.StudentEducationOrganizationAssociation') AND name = N'UX_StudentEducationOrganizationAssociation_Id')
CREATE UNIQUE NONCLUSTERED INDEX UX_StudentEducationOrganizationAssociation_Id ON [edfi].[StudentEducationOrganizationAssociation]
diff --git a/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/MsSql/Structure/Ods/0050-ExtendedProperties.sql b/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/MsSql/Structure/Ods/0050-ExtendedProperties.sql
index 7735d6080d..ba2a82426e 100644
--- a/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/MsSql/Structure/Ods/0050-ExtendedProperties.sql
+++ b/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/MsSql/Structure/Ods/0050-ExtendedProperties.sql
@@ -139,6 +139,48 @@ GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The description of the content or subject area (e.g., arts, mathematics, reading, stenography, or a foreign language) of an assessment.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'AssessmentAcademicSubject', @level2type=N'COLUMN', @level2name=N'AcademicSubjectDescriptorId'
GO
+-- Extended Properties [edfi].[AssessmentAdministration] --
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The anticipated administration of an assessment under the purview of an education organization.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'AssessmentAdministration'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The title or name of the assessment in the context of its administration.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'AssessmentAdministration', @level2type=N'COLUMN', @level2name=N'AdministrationIdentifier'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'A unique number or alphanumeric code assigned to an assessment.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'AssessmentAdministration', @level2type=N'COLUMN', @level2name=N'AssessmentIdentifier'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The identifier assigned to an education organization.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'AssessmentAdministration', @level2type=N'COLUMN', @level2name=N'AssigningEducationOrganizationId'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Namespace for the assessment.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'AssessmentAdministration', @level2type=N'COLUMN', @level2name=N'Namespace'
+GO
+
+-- Extended Properties [edfi].[AssessmentAdministrationAssessmentAdminstrationPeriod] --
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The anticipated dates for the assessment or administration window.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'AssessmentAdministrationAssessmentAdminstrationPeriod'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The title or name of the assessment in the context of its administration.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'AssessmentAdministrationAssessmentAdminstrationPeriod', @level2type=N'COLUMN', @level2name=N'AdministrationIdentifier'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'A unique number or alphanumeric code assigned to an assessment.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'AssessmentAdministrationAssessmentAdminstrationPeriod', @level2type=N'COLUMN', @level2name=N'AssessmentIdentifier'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The identifier assigned to an education organization.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'AssessmentAdministrationAssessmentAdminstrationPeriod', @level2type=N'COLUMN', @level2name=N'AssigningEducationOrganizationId'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Namespace for the assessment.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'AssessmentAdministrationAssessmentAdminstrationPeriod', @level2type=N'COLUMN', @level2name=N'Namespace'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The month, day, and year for the start of the period. Note: Date interpretation may vary. Ed-Fi recommends inclusive dates, but states may define dates as inclusive or exclusive. For calculations, align with local guidelines.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'AssessmentAdministrationAssessmentAdminstrationPeriod', @level2type=N'COLUMN', @level2name=N'BeginDate'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The month, day, and year for the end of the period. Note: Date interpretation may vary. Ed-Fi recommends inclusive dates, but states may define dates as inclusive or exclusive. For calculations, align with local guidelines.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'AssessmentAdministrationAssessmentAdminstrationPeriod', @level2type=N'COLUMN', @level2name=N'EndDate'
+GO
+
+-- Extended Properties [edfi].[AssessmentAdministrationAssessmentBatteryPart] --
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'A reference to the parts of the assessment battery that are offered in this administration of the assessment.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'AssessmentAdministrationAssessmentBatteryPart'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The title or name of the assessment in the context of its administration.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'AssessmentAdministrationAssessmentBatteryPart', @level2type=N'COLUMN', @level2name=N'AdministrationIdentifier'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'A unique number or alphanumeric code assigned to an assessment.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'AssessmentAdministrationAssessmentBatteryPart', @level2type=N'COLUMN', @level2name=N'AssessmentIdentifier'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The identifier assigned to an education organization.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'AssessmentAdministrationAssessmentBatteryPart', @level2type=N'COLUMN', @level2name=N'AssigningEducationOrganizationId'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Namespace for the assessment.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'AssessmentAdministrationAssessmentBatteryPart', @level2type=N'COLUMN', @level2name=N'Namespace'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The name of the part of an assessment battery.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'AssessmentAdministrationAssessmentBatteryPart', @level2type=N'COLUMN', @level2name=N'AssessmentBatteryPartName'
+GO
+
-- Extended Properties [edfi].[AssessmentAssessedGradeLevel] --
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The grade level(s) for which an assessment is designed. The semantics of null is assumed to mean that the assessment is not associated with any grade level.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'AssessmentAssessedGradeLevel'
GO
@@ -149,6 +191,28 @@ GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The grade level(s) for which an assessment is designed. The semantics of null is assumed to mean that the assessment is not associated with any grade level.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'AssessmentAssessedGradeLevel', @level2type=N'COLUMN', @level2name=N'GradeLevelDescriptorId'
GO
+-- Extended Properties [edfi].[AssessmentBatteryPart] --
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The parts organized for administering an assessessment which together provide a comprehensive assessment of the students.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'AssessmentBatteryPart'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The name of the part of an assessment battery.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'AssessmentBatteryPart', @level2type=N'COLUMN', @level2name=N'AssessmentBatteryPartName'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'A unique number or alphanumeric code assigned to an assessment.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'AssessmentBatteryPart', @level2type=N'COLUMN', @level2name=N'AssessmentIdentifier'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Namespace for the assessment.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'AssessmentBatteryPart', @level2type=N'COLUMN', @level2name=N'Namespace'
+GO
+
+-- Extended Properties [edfi].[AssessmentBatteryPartObjectiveAssessment] --
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'A reference to the objective assessment(s) that are administered by the assessment battery part.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'AssessmentBatteryPartObjectiveAssessment'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The name of the part of an assessment battery.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'AssessmentBatteryPartObjectiveAssessment', @level2type=N'COLUMN', @level2name=N'AssessmentBatteryPartName'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'A unique number or alphanumeric code assigned to an assessment.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'AssessmentBatteryPartObjectiveAssessment', @level2type=N'COLUMN', @level2name=N'AssessmentIdentifier'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Namespace for the assessment.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'AssessmentBatteryPartObjectiveAssessment', @level2type=N'COLUMN', @level2name=N'Namespace'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'A unique number or alphanumeric code assigned to an objective assessment by a school, school system, a state, or other agency or entity.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'AssessmentBatteryPartObjectiveAssessment', @level2type=N'COLUMN', @level2name=N'IdentificationCode'
+GO
+
-- Extended Properties [edfi].[AssessmentCategoryDescriptor] --
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'This descriptor holds the category of an assessment based on format and content.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'AssessmentCategoryDescriptor'
GO
@@ -421,6 +485,44 @@ GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The identifier for the calendar for the academic session.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'AssessmentSection', @level2type=N'COLUMN', @level2name=N'SessionName'
GO
+-- Extended Properties [edfi].[AssesssmentAdministrationParticipation] --
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Identifies the point of contact for the administration of an assessment under the purview of an education organization.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'AssesssmentAdministrationParticipation'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The title or name of the assessment in the context of its administration.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'AssesssmentAdministrationParticipation', @level2type=N'COLUMN', @level2name=N'AdministrationIdentifier'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'A unique number or alphanumeric code assigned to an assessment.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'AssesssmentAdministrationParticipation', @level2type=N'COLUMN', @level2name=N'AssessmentIdentifier'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The identifier assigned to an education organization.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'AssesssmentAdministrationParticipation', @level2type=N'COLUMN', @level2name=N'AssigningEducationOrganizationId'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Namespace for the assessment.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'AssesssmentAdministrationParticipation', @level2type=N'COLUMN', @level2name=N'Namespace'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The identifier assigned to an education organization.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'AssesssmentAdministrationParticipation', @level2type=N'COLUMN', @level2name=N'ParticipatingEducationOrganizationId'
+GO
+
+-- Extended Properties [edfi].[AssesssmentAdministrationParticipationAdministrationPointOfContact] --
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Pre-identified contacts for education organizations administering the assessment.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'AssesssmentAdministrationParticipationAdministrationPointOfContact'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The title or name of the assessment in the context of its administration.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'AssesssmentAdministrationParticipationAdministrationPointOfContact', @level2type=N'COLUMN', @level2name=N'AdministrationIdentifier'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'A unique number or alphanumeric code assigned to an assessment.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'AssesssmentAdministrationParticipationAdministrationPointOfContact', @level2type=N'COLUMN', @level2name=N'AssessmentIdentifier'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The identifier assigned to an education organization.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'AssesssmentAdministrationParticipationAdministrationPointOfContact', @level2type=N'COLUMN', @level2name=N'AssigningEducationOrganizationId'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Namespace for the assessment.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'AssesssmentAdministrationParticipationAdministrationPointOfContact', @level2type=N'COLUMN', @level2name=N'Namespace'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The identifier assigned to an education organization.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'AssesssmentAdministrationParticipationAdministrationPointOfContact', @level2type=N'COLUMN', @level2name=N'ParticipatingEducationOrganizationId'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The identifier assigned to an education organization.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'AssesssmentAdministrationParticipationAdministrationPointOfContact', @level2type=N'COLUMN', @level2name=N'EducationOrganizationId'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The email address for the contact.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'AssesssmentAdministrationParticipationAdministrationPointOfContact', @level2type=N'COLUMN', @level2name=N'ElectronicMailAddress'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The contact''s first name.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'AssesssmentAdministrationParticipationAdministrationPointOfContact', @level2type=N'COLUMN', @level2name=N'FirstName'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The contact''s last name.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'AssesssmentAdministrationParticipationAdministrationPointOfContact', @level2type=N'COLUMN', @level2name=N'LastSurname'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The login ID for the user; used for security access control interface.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'AssesssmentAdministrationParticipationAdministrationPointOfContact', @level2type=N'COLUMN', @level2name=N'LoginId'
+GO
+
-- Extended Properties [edfi].[AssignmentLateStatusDescriptor] --
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Status of whether the assignment was submitted after the due date and/or marked as late.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'AssignmentLateStatusDescriptor'
GO
@@ -4457,6 +4559,12 @@ GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'When a section is part of a sequence of parts for a course, the number of the sequence. If the course has only one part, the value of this section attribute should be 1.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'Section', @level2type=N'COLUMN', @level2name=N'SequenceOfCourse'
GO
+-- Extended Properties [edfi].[Section504DisabilityTypeDescriptor] --
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'This descriptor defines the reason(s) why student qualifies for Section 504 consideration.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'Section504DisabilityTypeDescriptor'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'A unique identifier used as Primary Key, not derived from business logic, when acting as Foreign Key, references the parent table.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'Section504DisabilityTypeDescriptor', @level2type=N'COLUMN', @level2name=N'Section504DisabilityTypeDescriptorId'
+GO
+
-- Extended Properties [edfi].[SectionAttendanceTakenEvent] --
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Captures attendance taken event for given section.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'SectionAttendanceTakenEvent'
GO
@@ -5757,6 +5865,110 @@ GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The last date the assessment is to be administered. Note: Date interpretation may vary. Ed-Fi recommends inclusive dates, but states may define dates as inclusive or exclusive. For calculations, align with local guidelines.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentAssessmentPeriod', @level2type=N'COLUMN', @level2name=N'EndDate'
GO
+-- Extended Properties [edfi].[StudentAssessmentRegistration] --
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Identifies an assessment registration that a student is expected to participate in including the testing organization, reporting organization and assessment delivery details.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentAssessmentRegistration'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The title or name of the assessment in the context of its administration.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentAssessmentRegistration', @level2type=N'COLUMN', @level2name=N'AdministrationIdentifier'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'A unique number or alphanumeric code assigned to an assessment.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentAssessmentRegistration', @level2type=N'COLUMN', @level2name=N'AssessmentIdentifier'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The identifier assigned to an education organization.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentAssessmentRegistration', @level2type=N'COLUMN', @level2name=N'AssigningEducationOrganizationId'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The identifier assigned to an education organization.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentAssessmentRegistration', @level2type=N'COLUMN', @level2name=N'EducationOrganizationId'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Namespace for the assessment.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentAssessmentRegistration', @level2type=N'COLUMN', @level2name=N'Namespace'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'A unique alphanumeric code assigned to a student.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentAssessmentRegistration', @level2type=N'COLUMN', @level2name=N'StudentUSI'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The grade level or primary instructional level at which the student is to be assessed.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentAssessmentRegistration', @level2type=N'COLUMN', @level2name=N'AssessmentGradeLevelDescriptorId'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The month, day, and year on which an individual enters and begins to receive instructional services in a school for each school year. The EntryDate value should be the date the student enrolled, or when the student''s enrollment materially changed, such as with a grade promotion. Note: Date interpretation may vary. Ed-Fi recommends inclusive dates, but states may define dates as inclusive or exclusive. For calculations, align with local guidelines.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentAssessmentRegistration', @level2type=N'COLUMN', @level2name=N'EntryDate'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The environment or format in which the assessment is expected to be administered.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentAssessmentRegistration', @level2type=N'COLUMN', @level2name=N'PlatformTypeDescriptorId'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The identifier assigned to an education organization.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentAssessmentRegistration', @level2type=N'COLUMN', @level2name=N'ReportingEducationOrganizationId'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The identifier assigned to a school. It must be distinct from any other identifier assigned to educational organizations, such as a LocalEducationAgencyId, to prevent duplication.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentAssessmentRegistration', @level2type=N'COLUMN', @level2name=N'SchoolId'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The identifier assigned to an education organization.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentAssessmentRegistration', @level2type=N'COLUMN', @level2name=N'TestingEducationOrganizationId'
+GO
+
+-- Extended Properties [edfi].[StudentAssessmentRegistrationAssessmentAccommodation] --
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The special variation(s) to be used in how assessments (in general) are presented, how it is administered, or how the test taker is allowed to respond. This generally refers to changes that do not substantially alter what the examination measures. The proper use of accommodations does not substantially change academic level or performance criteria.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentAssessmentRegistrationAssessmentAccommodation'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The title or name of the assessment in the context of its administration.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentAssessmentRegistrationAssessmentAccommodation', @level2type=N'COLUMN', @level2name=N'AdministrationIdentifier'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'A unique number or alphanumeric code assigned to an assessment.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentAssessmentRegistrationAssessmentAccommodation', @level2type=N'COLUMN', @level2name=N'AssessmentIdentifier'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The identifier assigned to an education organization.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentAssessmentRegistrationAssessmentAccommodation', @level2type=N'COLUMN', @level2name=N'AssigningEducationOrganizationId'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The identifier assigned to an education organization.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentAssessmentRegistrationAssessmentAccommodation', @level2type=N'COLUMN', @level2name=N'EducationOrganizationId'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Namespace for the assessment.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentAssessmentRegistrationAssessmentAccommodation', @level2type=N'COLUMN', @level2name=N'Namespace'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'A unique alphanumeric code assigned to a student.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentAssessmentRegistrationAssessmentAccommodation', @level2type=N'COLUMN', @level2name=N'StudentUSI'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The special variation(s) to be used in how assessments (in general) are presented, how it is administered, or how the test taker is allowed to respond. This generally refers to changes that do not substantially alter what the examination measures. The proper use of accommodations does not substantially change academic level or performance criteria.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentAssessmentRegistrationAssessmentAccommodation', @level2type=N'COLUMN', @level2name=N'AccommodationDescriptorId'
+GO
+
+-- Extended Properties [edfi].[StudentAssessmentRegistrationAssessmentCustomization] --
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Key/value pairs which may be used to facilitate customization of an assessment or to support vendor reporting/analysis.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentAssessmentRegistrationAssessmentCustomization'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The title or name of the assessment in the context of its administration.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentAssessmentRegistrationAssessmentCustomization', @level2type=N'COLUMN', @level2name=N'AdministrationIdentifier'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'A unique number or alphanumeric code assigned to an assessment.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentAssessmentRegistrationAssessmentCustomization', @level2type=N'COLUMN', @level2name=N'AssessmentIdentifier'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The identifier assigned to an education organization.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentAssessmentRegistrationAssessmentCustomization', @level2type=N'COLUMN', @level2name=N'AssigningEducationOrganizationId'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The identifier assigned to an education organization.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentAssessmentRegistrationAssessmentCustomization', @level2type=N'COLUMN', @level2name=N'EducationOrganizationId'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Namespace for the assessment.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentAssessmentRegistrationAssessmentCustomization', @level2type=N'COLUMN', @level2name=N'Namespace'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'A unique alphanumeric code assigned to a student.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentAssessmentRegistrationAssessmentCustomization', @level2type=N'COLUMN', @level2name=N'StudentUSI'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'An agreed upon identifier for the custom information.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentAssessmentRegistrationAssessmentCustomization', @level2type=N'COLUMN', @level2name=N'CustomizationKey'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Custom value for the indicated CustomizationKey.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentAssessmentRegistrationAssessmentCustomization', @level2type=N'COLUMN', @level2name=N'CustomizationValue'
+GO
+
+-- Extended Properties [edfi].[StudentAssessmentRegistrationBatteryPartAssociation] --
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The association to the part(s) of the assessment battery that the student is to be tested for this administration of the assessment.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentAssessmentRegistrationBatteryPartAssociation'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The title or name of the assessment in the context of its administration.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentAssessmentRegistrationBatteryPartAssociation', @level2type=N'COLUMN', @level2name=N'AdministrationIdentifier'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The name of the part of an assessment battery.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentAssessmentRegistrationBatteryPartAssociation', @level2type=N'COLUMN', @level2name=N'AssessmentBatteryPartName'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'A unique number or alphanumeric code assigned to an assessment.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentAssessmentRegistrationBatteryPartAssociation', @level2type=N'COLUMN', @level2name=N'AssessmentIdentifier'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The identifier assigned to an education organization.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentAssessmentRegistrationBatteryPartAssociation', @level2type=N'COLUMN', @level2name=N'AssigningEducationOrganizationId'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The identifier assigned to an education organization.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentAssessmentRegistrationBatteryPartAssociation', @level2type=N'COLUMN', @level2name=N'EducationOrganizationId'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Namespace for the assessment.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentAssessmentRegistrationBatteryPartAssociation', @level2type=N'COLUMN', @level2name=N'Namespace'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'A unique alphanumeric code assigned to a student.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentAssessmentRegistrationBatteryPartAssociation', @level2type=N'COLUMN', @level2name=N'StudentUSI'
+GO
+
+-- Extended Properties [edfi].[StudentAssessmentRegistrationBatteryPartAssociationAccommodation] --
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The special variation(s) to be used for the specific part of the assessment battery on how is presented, how it is administered, or how the test taker is allowed to respond.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentAssessmentRegistrationBatteryPartAssociationAccommodation'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The title or name of the assessment in the context of its administration.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentAssessmentRegistrationBatteryPartAssociationAccommodation', @level2type=N'COLUMN', @level2name=N'AdministrationIdentifier'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The name of the part of an assessment battery.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentAssessmentRegistrationBatteryPartAssociationAccommodation', @level2type=N'COLUMN', @level2name=N'AssessmentBatteryPartName'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'A unique number or alphanumeric code assigned to an assessment.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentAssessmentRegistrationBatteryPartAssociationAccommodation', @level2type=N'COLUMN', @level2name=N'AssessmentIdentifier'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The identifier assigned to an education organization.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentAssessmentRegistrationBatteryPartAssociationAccommodation', @level2type=N'COLUMN', @level2name=N'AssigningEducationOrganizationId'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The identifier assigned to an education organization.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentAssessmentRegistrationBatteryPartAssociationAccommodation', @level2type=N'COLUMN', @level2name=N'EducationOrganizationId'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Namespace for the assessment.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentAssessmentRegistrationBatteryPartAssociationAccommodation', @level2type=N'COLUMN', @level2name=N'Namespace'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'A unique alphanumeric code assigned to a student.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentAssessmentRegistrationBatteryPartAssociationAccommodation', @level2type=N'COLUMN', @level2name=N'StudentUSI'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The special variation(s) to be used for the specific part of the assessment battery on how is presented, how it is administered, or how the test taker is allowed to respond.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentAssessmentRegistrationBatteryPartAssociationAccommodation', @level2type=N'COLUMN', @level2name=N'AccommodationDescriptorId'
+GO
+
-- Extended Properties [edfi].[StudentAssessmentScoreResult] --
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'A meaningful score or statistical expression of the performance of an individual. The results can be expressed as a number, percentile, range, level, etc.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentAssessmentScoreResult'
GO
@@ -6083,6 +6295,24 @@ GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The role or type of participation of a student in a discipline incident.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentDisciplineIncidentNonOffenderAssociationDisciplineIncidentParticipationCode', @level2type=N'COLUMN', @level2name=N'DisciplineIncidentParticipationCodeDescriptorId'
GO
+-- Extended Properties [edfi].[StudentEducationOrganizationAssessmentAccommodation] --
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The accommodation(s) required or expected for administering assessments as determined by the education organization.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentEducationOrganizationAssessmentAccommodation'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The identifier assigned to an education organization.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentEducationOrganizationAssessmentAccommodation', @level2type=N'COLUMN', @level2name=N'EducationOrganizationId'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'A unique alphanumeric code assigned to a student.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentEducationOrganizationAssessmentAccommodation', @level2type=N'COLUMN', @level2name=N'StudentUSI'
+GO
+
+-- Extended Properties [edfi].[StudentEducationOrganizationAssessmentAccommodationGeneralAccommodation] --
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The special variation(s) to be used in how assessments (in general) are presented, how it is administered, or how the test taker is allowed to respond. This generally refers to changes that do not substantially alter what the examination measures. The proper use of accommodations does not substantially change academic level or performance criteria.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentEducationOrganizationAssessmentAccommodationGeneralAccommodation'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The identifier assigned to an education organization.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentEducationOrganizationAssessmentAccommodationGeneralAccommodation', @level2type=N'COLUMN', @level2name=N'EducationOrganizationId'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'A unique alphanumeric code assigned to a student.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentEducationOrganizationAssessmentAccommodationGeneralAccommodation', @level2type=N'COLUMN', @level2name=N'StudentUSI'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The special variation(s) to be used in how assessments (in general) are presented, how it is administered, or how the test taker is allowed to respond. This generally refers to changes that do not substantially alter what the examination measures. The proper use of accommodations does not substantially change academic level or performance criteria.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentEducationOrganizationAssessmentAccommodationGeneralAccommodation', @level2type=N'COLUMN', @level2name=N'AccommodationDescriptorId'
+GO
+
-- Extended Properties [edfi].[StudentEducationOrganizationAssociation] --
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'This association represents student information as reported in the context of the student''s relationship to the education organization. Enrollment relationship semantics are covered by StudentSchoolAssociation.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentEducationOrganizationAssociation'
GO
@@ -7207,6 +7437,32 @@ GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Last date the student was in this option for the current school year. Note: Date interpretation may vary. Ed-Fi recommends inclusive dates, but states may define dates as inclusive or exclusive. For calculations, align with local guidelines.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentSchoolFoodServiceProgramAssociationSchoolFoodServiceProgramService', @level2type=N'COLUMN', @level2name=N'ServiceEndDate'
GO
+-- Extended Properties [edfi].[StudentSection504ProgramAssociation] --
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'This association identifies student that qualifies for the Section 504 of the Rehabilitation Act of 1973.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentSection504ProgramAssociation'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The earliest date the student is involved with the program. Typically, this is the date the student becomes eligible for the program. Note: Date interpretation may vary. Ed-Fi recommends inclusive dates, but states may define dates as inclusive or exclusive. For calculations, align with local guidelines.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentSection504ProgramAssociation', @level2type=N'COLUMN', @level2name=N'BeginDate'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The identifier assigned to an education organization.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentSection504ProgramAssociation', @level2type=N'COLUMN', @level2name=N'EducationOrganizationId'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The identifier assigned to an education organization.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentSection504ProgramAssociation', @level2type=N'COLUMN', @level2name=N'ProgramEducationOrganizationId'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The formal name of the program of instruction, training, services, or benefits available through federal, state, or local agencies.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentSection504ProgramAssociation', @level2type=N'COLUMN', @level2name=N'ProgramName'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The type of program.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentSection504ProgramAssociation', @level2type=N'COLUMN', @level2name=N'ProgramTypeDescriptorId'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'A unique alphanumeric code assigned to a student.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentSection504ProgramAssociation', @level2type=N'COLUMN', @level2name=N'StudentUSI'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Indicates whether student has a Section 504 accommodation plan.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentSection504ProgramAssociation', @level2type=N'COLUMN', @level2name=N'AccommodationPlan'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Defines one or more disabilities student has that qualifies them for a Section 504 plan.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentSection504ProgramAssociation', @level2type=N'COLUMN', @level2name=N'Section504DisabilityTypeDescriptorId'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Indicates whether student has a disability, either temporary or permenant, that qualifies student for Section 504 consideration. Selection of FALSE for this boolean is equivalent to marking student as ''Did Not Qualify''.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentSection504ProgramAssociation', @level2type=N'COLUMN', @level2name=N'Section504Eligibility'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The month, day, and year on which the Section 504 eligibility decision is made.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentSection504ProgramAssociation', @level2type=N'COLUMN', @level2name=N'Section504EligibilityDecisionDate'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The month, day, and year on which the meeting with student''s parent/guardian held to discuss the 504 eligibility of the student.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentSection504ProgramAssociation', @level2type=N'COLUMN', @level2name=N'Section504MeetingDate'
+GO
+
-- Extended Properties [edfi].[StudentSectionAssociation] --
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'This association indicates the course sections to which a student is assigned.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentSectionAssociation'
GO
@@ -7480,6 +7736,8 @@ EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Indicates the
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The identifier assigned to an education organization.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentSpecialEducationProgramEligibilityAssociation', @level2type=N'COLUMN', @level2name=N'EducationOrganizationId'
GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The identifier assigned to an education organization.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentSpecialEducationProgramEligibilityAssociation', @level2type=N'COLUMN', @level2name=N'ProgramEducationOrganizationId'
+GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The formal name of the program of instruction, training, services, or benefits available through federal, state, or local agencies.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentSpecialEducationProgramEligibilityAssociation', @level2type=N'COLUMN', @level2name=N'ProgramName'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'The type of program.', @level0type=N'SCHEMA', @level0name=N'edfi', @level1type=N'TABLE', @level1name=N'StudentSpecialEducationProgramEligibilityAssociation', @level2type=N'COLUMN', @level2name=N'ProgramTypeDescriptorId'
diff --git a/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/MsSql/Structure/Ods/1410-CreateIndex-EdOrgIdsRelationship-AuthPerformance.sql b/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/MsSql/Structure/Ods/1410-CreateIndex-EdOrgIdsRelationship-AuthPerformance.sql
index 7f1e468880..ba2e20c19a 100644
--- a/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/MsSql/Structure/Ods/1410-CreateIndex-EdOrgIdsRelationship-AuthPerformance.sql
+++ b/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/MsSql/Structure/Ods/1410-CreateIndex-EdOrgIdsRelationship-AuthPerformance.sql
@@ -19,6 +19,11 @@ BEGIN
CREATE INDEX IX_Assessment_EducationOrganizationId ON [edfi].[Assessment](EducationOrganizationId) INCLUDE (Id)
END;
+IF NOT EXISTS(SELECT * FROM sys.indexes WHERE name='IX_AssesssmentAdministrationParticipation_AssigningEducationOrganizationId' AND object_id = OBJECT_ID('edfi.AssesssmentAdministrationParticipation'))
+BEGIN
+ CREATE INDEX IX_AssesssmentAdministrationParticipation_AssigningEducationOrganizationId ON [edfi].[AssesssmentAdministrationParticipation](AssigningEducationOrganizationId) INCLUDE (Id)
+END;
+
IF NOT EXISTS(SELECT * FROM sys.indexes WHERE name='IX_BellSchedule_SchoolId' AND object_id = OBJECT_ID('edfi.BellSchedule'))
BEGIN
CREATE INDEX IX_BellSchedule_SchoolId ON [edfi].[BellSchedule](SchoolId) INCLUDE (Id)
@@ -284,6 +289,31 @@ BEGIN
CREATE INDEX IX_StudentAssessmentEducationOrganizationAssociation_EducationOrganizationId ON [edfi].[StudentAssessmentEducationOrganizationAssociation](EducationOrganizationId) INCLUDE (Id)
END;
+IF NOT EXISTS(SELECT * FROM sys.indexes WHERE name='IX_StudentAssessmentRegistration_AssigningEducationOrganizationId' AND object_id = OBJECT_ID('edfi.StudentAssessmentRegistration'))
+BEGIN
+ CREATE INDEX IX_StudentAssessmentRegistration_AssigningEducationOrganizationId ON [edfi].[StudentAssessmentRegistration](AssigningEducationOrganizationId) INCLUDE (Id)
+END;
+
+IF NOT EXISTS(SELECT * FROM sys.indexes WHERE name='IX_StudentAssessmentRegistration_EducationOrganizationId' AND object_id = OBJECT_ID('edfi.StudentAssessmentRegistration'))
+BEGIN
+ CREATE INDEX IX_StudentAssessmentRegistration_EducationOrganizationId ON [edfi].[StudentAssessmentRegistration](EducationOrganizationId) INCLUDE (Id)
+END;
+
+IF NOT EXISTS(SELECT * FROM sys.indexes WHERE name='IX_StudentAssessmentRegistration_SchoolId' AND object_id = OBJECT_ID('edfi.StudentAssessmentRegistration'))
+BEGIN
+ CREATE INDEX IX_StudentAssessmentRegistration_SchoolId ON [edfi].[StudentAssessmentRegistration](SchoolId) INCLUDE (Id)
+END;
+
+IF NOT EXISTS(SELECT * FROM sys.indexes WHERE name='IX_StudentAssessmentRegistrationBatteryPartAssociation_AssigningEducationOrganizationId' AND object_id = OBJECT_ID('edfi.StudentAssessmentRegistrationBatteryPartAssociation'))
+BEGIN
+ CREATE INDEX IX_StudentAssessmentRegistrationBatteryPartAssociation_AssigningEducationOrganizationId ON [edfi].[StudentAssessmentRegistrationBatteryPartAssociation](AssigningEducationOrganizationId) INCLUDE (Id)
+END;
+
+IF NOT EXISTS(SELECT * FROM sys.indexes WHERE name='IX_StudentAssessmentRegistrationBatteryPartAssociation_EducationOrganizationId' AND object_id = OBJECT_ID('edfi.StudentAssessmentRegistrationBatteryPartAssociation'))
+BEGIN
+ CREATE INDEX IX_StudentAssessmentRegistrationBatteryPartAssociation_EducationOrganizationId ON [edfi].[StudentAssessmentRegistrationBatteryPartAssociation](EducationOrganizationId) INCLUDE (Id)
+END;
+
IF NOT EXISTS(SELECT * FROM sys.indexes WHERE name='IX_StudentCohortAssociation_EducationOrganizationId' AND object_id = OBJECT_ID('edfi.StudentCohortAssociation'))
BEGIN
CREATE INDEX IX_StudentCohortAssociation_EducationOrganizationId ON [edfi].[StudentCohortAssociation](EducationOrganizationId) INCLUDE (Id)
@@ -299,6 +329,11 @@ BEGIN
CREATE INDEX IX_StudentDisciplineIncidentNonOffenderAssociation_SchoolId ON [edfi].[StudentDisciplineIncidentNonOffenderAssociation](SchoolId) INCLUDE (Id)
END;
+IF NOT EXISTS(SELECT * FROM sys.indexes WHERE name='IX_StudentEducationOrganizationAssessmentAccommodation_EducationOrganizationId' AND object_id = OBJECT_ID('edfi.StudentEducationOrganizationAssessmentAccommodation'))
+BEGIN
+ CREATE INDEX IX_StudentEducationOrganizationAssessmentAccommodation_EducationOrganizationId ON [edfi].[StudentEducationOrganizationAssessmentAccommodation](EducationOrganizationId) INCLUDE (Id)
+END;
+
IF NOT EXISTS(SELECT * FROM sys.indexes WHERE name='IX_StudentEducationOrganizationAssociation_EducationOrganizationId' AND object_id = OBJECT_ID('edfi.StudentEducationOrganizationAssociation'))
BEGIN
CREATE INDEX IX_StudentEducationOrganizationAssociation_EducationOrganizationId ON [edfi].[StudentEducationOrganizationAssociation](EducationOrganizationId) INCLUDE (Id)
diff --git a/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/MsSql/Structure/Ods/1460-AggregateIdColumns.sql b/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/MsSql/Structure/Ods/1460-AggregateIdColumns.sql
index 19235d275e..92d37e466d 100644
--- a/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/MsSql/Structure/Ods/1460-AggregateIdColumns.sql
+++ b/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/MsSql/Structure/Ods/1460-AggregateIdColumns.sql
@@ -15,6 +15,14 @@ CREATE SEQUENCE [edfi].[Assessment_AggSeq] START WITH -2147483648 INCREMENT BY 1
ALTER TABLE [edfi].[Assessment] ADD AggregateId int NOT NULL DEFAULT NEXT VALUE FOR [edfi].[Assessment_AggSeq];
CREATE INDEX [IX_Assessment_AggregateId] ON [edfi].[Assessment] (AggregateId);
+CREATE SEQUENCE [edfi].[AssessmentAdministration_AggSeq] START WITH -2147483648 INCREMENT BY 1;
+ALTER TABLE [edfi].[AssessmentAdministration] ADD AggregateId int NOT NULL DEFAULT NEXT VALUE FOR [edfi].[AssessmentAdministration_AggSeq];
+CREATE INDEX [IX_AssessmentAdministration_AggregateId] ON [edfi].[AssessmentAdministration] (AggregateId);
+
+CREATE SEQUENCE [edfi].[AssessmentBatteryPart_AggSeq] START WITH -2147483648 INCREMENT BY 1;
+ALTER TABLE [edfi].[AssessmentBatteryPart] ADD AggregateId int NOT NULL DEFAULT NEXT VALUE FOR [edfi].[AssessmentBatteryPart_AggSeq];
+CREATE INDEX [IX_AssessmentBatteryPart_AggregateId] ON [edfi].[AssessmentBatteryPart] (AggregateId);
+
CREATE SEQUENCE [edfi].[AssessmentItem_AggSeq] START WITH -2147483648 INCREMENT BY 1;
ALTER TABLE [edfi].[AssessmentItem] ADD AggregateId int NOT NULL DEFAULT NEXT VALUE FOR [edfi].[AssessmentItem_AggSeq];
CREATE INDEX [IX_AssessmentItem_AggregateId] ON [edfi].[AssessmentItem] (AggregateId);
@@ -23,6 +31,10 @@ CREATE SEQUENCE [edfi].[AssessmentScoreRangeLearningStandard_AggSeq] START WITH
ALTER TABLE [edfi].[AssessmentScoreRangeLearningStandard] ADD AggregateId int NOT NULL DEFAULT NEXT VALUE FOR [edfi].[AssessmentScoreRangeLearningStandard_AggSeq];
CREATE INDEX [IX_AssessmentScoreRangeLearningStandard_AggregateId] ON [edfi].[AssessmentScoreRangeLearningStandard] (AggregateId);
+CREATE SEQUENCE [edfi].[AssesssmentAdministrationParticipation_AggSeq] START WITH -2147483648 INCREMENT BY 1;
+ALTER TABLE [edfi].[AssesssmentAdministrationParticipation] ADD AggregateId int NOT NULL DEFAULT NEXT VALUE FOR [edfi].[AssesssmentAdministrationParticipation_AggSeq];
+CREATE INDEX [IX_AssesssmentAdministrationParticipation_AggregateId] ON [edfi].[AssesssmentAdministrationParticipation] (AggregateId);
+
CREATE SEQUENCE [edfi].[BalanceSheetDimension_AggSeq] START WITH -2147483648 INCREMENT BY 1;
ALTER TABLE [edfi].[BalanceSheetDimension] ADD AggregateId int NOT NULL DEFAULT NEXT VALUE FOR [edfi].[BalanceSheetDimension_AggSeq];
CREATE INDEX [IX_BalanceSheetDimension_AggregateId] ON [edfi].[BalanceSheetDimension] (AggregateId);
@@ -339,6 +351,14 @@ CREATE SEQUENCE [edfi].[StudentAssessmentEducationOrganizationAssociation_AggSeq
ALTER TABLE [edfi].[StudentAssessmentEducationOrganizationAssociation] ADD AggregateId int NOT NULL DEFAULT NEXT VALUE FOR [edfi].[StudentAssessmentEducationOrganizationAssociation_AggSeq];
CREATE INDEX [IX_StudentAssessmentEducationOrganizationAssociation_AggregateId] ON [edfi].[StudentAssessmentEducationOrganizationAssociation] (AggregateId);
+CREATE SEQUENCE [edfi].[StudentAssessmentRegistration_AggSeq] START WITH -2147483648 INCREMENT BY 1;
+ALTER TABLE [edfi].[StudentAssessmentRegistration] ADD AggregateId int NOT NULL DEFAULT NEXT VALUE FOR [edfi].[StudentAssessmentRegistration_AggSeq];
+CREATE INDEX [IX_StudentAssessmentRegistration_AggregateId] ON [edfi].[StudentAssessmentRegistration] (AggregateId);
+
+CREATE SEQUENCE [edfi].[StudentAssessmentRegistrationBatteryPartAssociation_AggSeq] START WITH -2147483648 INCREMENT BY 1;
+ALTER TABLE [edfi].[StudentAssessmentRegistrationBatteryPartAssociation] ADD AggregateId int NOT NULL DEFAULT NEXT VALUE FOR [edfi].[StudentAssessmentRegistrationBatteryPartAssociation_AggSeq];
+CREATE INDEX [IX_StudentAssessmentRegistrationBatteryPartAssociation_AggregateId] ON [edfi].[StudentAssessmentRegistrationBatteryPartAssociation] (AggregateId);
+
CREATE SEQUENCE [edfi].[StudentCohortAssociation_AggSeq] START WITH -2147483648 INCREMENT BY 1;
ALTER TABLE [edfi].[StudentCohortAssociation] ADD AggregateId int NOT NULL DEFAULT NEXT VALUE FOR [edfi].[StudentCohortAssociation_AggSeq];
CREATE INDEX [IX_StudentCohortAssociation_AggregateId] ON [edfi].[StudentCohortAssociation] (AggregateId);
@@ -359,6 +379,10 @@ CREATE SEQUENCE [edfi].[StudentDisciplineIncidentNonOffenderAssociation_AggSeq]
ALTER TABLE [edfi].[StudentDisciplineIncidentNonOffenderAssociation] ADD AggregateId int NOT NULL DEFAULT NEXT VALUE FOR [edfi].[StudentDisciplineIncidentNonOffenderAssociation_AggSeq];
CREATE INDEX [IX_StudentDisciplineIncidentNonOffenderAssociation_AggregateId] ON [edfi].[StudentDisciplineIncidentNonOffenderAssociation] (AggregateId);
+CREATE SEQUENCE [edfi].[StudentEducationOrganizationAssessmentAccommodation_AggSeq] START WITH -2147483648 INCREMENT BY 1;
+ALTER TABLE [edfi].[StudentEducationOrganizationAssessmentAccommodation] ADD AggregateId int NOT NULL DEFAULT NEXT VALUE FOR [edfi].[StudentEducationOrganizationAssessmentAccommodation_AggSeq];
+CREATE INDEX [IX_StudentEducationOrganizationAssessmentAccommodation_AggregateId] ON [edfi].[StudentEducationOrganizationAssessmentAccommodation] (AggregateId);
+
CREATE SEQUENCE [edfi].[StudentEducationOrganizationAssociation_AggSeq] START WITH -2147483648 INCREMENT BY 1;
ALTER TABLE [edfi].[StudentEducationOrganizationAssociation] ADD AggregateId int NOT NULL DEFAULT NEXT VALUE FOR [edfi].[StudentEducationOrganizationAssociation_AggSeq];
CREATE INDEX [IX_StudentEducationOrganizationAssociation_AggregateId] ON [edfi].[StudentEducationOrganizationAssociation] (AggregateId);
diff --git a/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/MsSql/Structure/Ods/Changes/0030-AddColumnChangeVersionForTables.sql b/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/MsSql/Structure/Ods/Changes/0030-AddColumnChangeVersionForTables.sql
index 4e90433982..d8f6b17366 100644
--- a/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/MsSql/Structure/Ods/Changes/0030-AddColumnChangeVersionForTables.sql
+++ b/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/MsSql/Structure/Ods/Changes/0030-AddColumnChangeVersionForTables.sql
@@ -29,6 +29,22 @@ ALTER TABLE [edfi].[Assessment] ADD CONSTRAINT Assessment_DF_ChangeVersion DEFAU
END
+IF NOT EXISTS (SELECT * FROM sys.columns WHERE object_id = OBJECT_ID(N'[edfi].[AssessmentAdministration]') AND name = 'ChangeVersion')
+BEGIN
+ALTER TABLE [edfi].[AssessmentAdministration] ADD [ChangeVersion] [BIGINT] CONSTRAINT AssessmentAdministration_DF_ChangeVersion DEFAULT (0) NOT NULL;
+ALTER TABLE [edfi].[AssessmentAdministration] DROP CONSTRAINT AssessmentAdministration_DF_ChangeVersion;
+ALTER TABLE [edfi].[AssessmentAdministration] ADD CONSTRAINT AssessmentAdministration_DF_ChangeVersion DEFAULT (NEXT VALUE FOR [changes].[ChangeVersionSequence]) For [ChangeVersion];
+END
+
+
+IF NOT EXISTS (SELECT * FROM sys.columns WHERE object_id = OBJECT_ID(N'[edfi].[AssessmentBatteryPart]') AND name = 'ChangeVersion')
+BEGIN
+ALTER TABLE [edfi].[AssessmentBatteryPart] ADD [ChangeVersion] [BIGINT] CONSTRAINT AssessmentBatteryPart_DF_ChangeVersion DEFAULT (0) NOT NULL;
+ALTER TABLE [edfi].[AssessmentBatteryPart] DROP CONSTRAINT AssessmentBatteryPart_DF_ChangeVersion;
+ALTER TABLE [edfi].[AssessmentBatteryPart] ADD CONSTRAINT AssessmentBatteryPart_DF_ChangeVersion DEFAULT (NEXT VALUE FOR [changes].[ChangeVersionSequence]) For [ChangeVersion];
+END
+
+
IF NOT EXISTS (SELECT * FROM sys.columns WHERE object_id = OBJECT_ID(N'[edfi].[AssessmentItem]') AND name = 'ChangeVersion')
BEGIN
ALTER TABLE [edfi].[AssessmentItem] ADD [ChangeVersion] [BIGINT] CONSTRAINT AssessmentItem_DF_ChangeVersion DEFAULT (0) NOT NULL;
@@ -45,6 +61,14 @@ ALTER TABLE [edfi].[AssessmentScoreRangeLearningStandard] ADD CONSTRAINT Assessm
END
+IF NOT EXISTS (SELECT * FROM sys.columns WHERE object_id = OBJECT_ID(N'[edfi].[AssesssmentAdministrationParticipation]') AND name = 'ChangeVersion')
+BEGIN
+ALTER TABLE [edfi].[AssesssmentAdministrationParticipation] ADD [ChangeVersion] [BIGINT] CONSTRAINT AssesssmentAdministrationParticipation_DF_ChangeVersion DEFAULT (0) NOT NULL;
+ALTER TABLE [edfi].[AssesssmentAdministrationParticipation] DROP CONSTRAINT AssesssmentAdministrationParticipation_DF_ChangeVersion;
+ALTER TABLE [edfi].[AssesssmentAdministrationParticipation] ADD CONSTRAINT AssesssmentAdministrationParticipation_DF_ChangeVersion DEFAULT (NEXT VALUE FOR [changes].[ChangeVersionSequence]) For [ChangeVersion];
+END
+
+
IF NOT EXISTS (SELECT * FROM sys.columns WHERE object_id = OBJECT_ID(N'[edfi].[BalanceSheetDimension]') AND name = 'ChangeVersion')
BEGIN
ALTER TABLE [edfi].[BalanceSheetDimension] ADD [ChangeVersion] [BIGINT] CONSTRAINT BalanceSheetDimension_DF_ChangeVersion DEFAULT (0) NOT NULL;
@@ -677,6 +701,22 @@ ALTER TABLE [edfi].[StudentAssessmentEducationOrganizationAssociation] ADD CONST
END
+IF NOT EXISTS (SELECT * FROM sys.columns WHERE object_id = OBJECT_ID(N'[edfi].[StudentAssessmentRegistration]') AND name = 'ChangeVersion')
+BEGIN
+ALTER TABLE [edfi].[StudentAssessmentRegistration] ADD [ChangeVersion] [BIGINT] CONSTRAINT StudentAssessmentRegistration_DF_ChangeVersion DEFAULT (0) NOT NULL;
+ALTER TABLE [edfi].[StudentAssessmentRegistration] DROP CONSTRAINT StudentAssessmentRegistration_DF_ChangeVersion;
+ALTER TABLE [edfi].[StudentAssessmentRegistration] ADD CONSTRAINT StudentAssessmentRegistration_DF_ChangeVersion DEFAULT (NEXT VALUE FOR [changes].[ChangeVersionSequence]) For [ChangeVersion];
+END
+
+
+IF NOT EXISTS (SELECT * FROM sys.columns WHERE object_id = OBJECT_ID(N'[edfi].[StudentAssessmentRegistrationBatteryPartAssociation]') AND name = 'ChangeVersion')
+BEGIN
+ALTER TABLE [edfi].[StudentAssessmentRegistrationBatteryPartAssociation] ADD [ChangeVersion] [BIGINT] CONSTRAINT StudentAssessmentRegistrationBatteryPartAssociation_DF_ChangeVersion DEFAULT (0) NOT NULL;
+ALTER TABLE [edfi].[StudentAssessmentRegistrationBatteryPartAssociation] DROP CONSTRAINT StudentAssessmentRegistrationBatteryPartAssociation_DF_ChangeVersion;
+ALTER TABLE [edfi].[StudentAssessmentRegistrationBatteryPartAssociation] ADD CONSTRAINT StudentAssessmentRegistrationBatteryPartAssociation_DF_ChangeVersion DEFAULT (NEXT VALUE FOR [changes].[ChangeVersionSequence]) For [ChangeVersion];
+END
+
+
IF NOT EXISTS (SELECT * FROM sys.columns WHERE object_id = OBJECT_ID(N'[edfi].[StudentCohortAssociation]') AND name = 'ChangeVersion')
BEGIN
ALTER TABLE [edfi].[StudentCohortAssociation] ADD [ChangeVersion] [BIGINT] CONSTRAINT StudentCohortAssociation_DF_ChangeVersion DEFAULT (0) NOT NULL;
@@ -717,6 +757,14 @@ ALTER TABLE [edfi].[StudentDisciplineIncidentNonOffenderAssociation] ADD CONSTRA
END
+IF NOT EXISTS (SELECT * FROM sys.columns WHERE object_id = OBJECT_ID(N'[edfi].[StudentEducationOrganizationAssessmentAccommodation]') AND name = 'ChangeVersion')
+BEGIN
+ALTER TABLE [edfi].[StudentEducationOrganizationAssessmentAccommodation] ADD [ChangeVersion] [BIGINT] CONSTRAINT StudentEducationOrganizationAssessmentAccommodation_DF_ChangeVersion DEFAULT (0) NOT NULL;
+ALTER TABLE [edfi].[StudentEducationOrganizationAssessmentAccommodation] DROP CONSTRAINT StudentEducationOrganizationAssessmentAccommodation_DF_ChangeVersion;
+ALTER TABLE [edfi].[StudentEducationOrganizationAssessmentAccommodation] ADD CONSTRAINT StudentEducationOrganizationAssessmentAccommodation_DF_ChangeVersion DEFAULT (NEXT VALUE FOR [changes].[ChangeVersionSequence]) For [ChangeVersion];
+END
+
+
IF NOT EXISTS (SELECT * FROM sys.columns WHERE object_id = OBJECT_ID(N'[edfi].[StudentEducationOrganizationAssociation]') AND name = 'ChangeVersion')
BEGIN
ALTER TABLE [edfi].[StudentEducationOrganizationAssociation] ADD [ChangeVersion] [BIGINT] CONSTRAINT StudentEducationOrganizationAssociation_DF_ChangeVersion DEFAULT (0) NOT NULL;
diff --git a/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/MsSql/Structure/Ods/Changes/0070-AddIndexChangeVersionForTables.sql b/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/MsSql/Structure/Ods/Changes/0070-AddIndexChangeVersionForTables.sql
index 39e0cc7cb7..5d1c5c94f2 100644
--- a/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/MsSql/Structure/Ods/Changes/0070-AddIndexChangeVersionForTables.sql
+++ b/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/MsSql/Structure/Ods/Changes/0070-AddIndexChangeVersionForTables.sql
@@ -21,6 +21,18 @@ BEGIN TRANSACTION
GO
COMMIT
+BEGIN TRANSACTION
+ IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'edfi.AssessmentAdministration') AND name = N'UX_AssessmentAdministration_ChangeVersion')
+ CREATE INDEX [UX_AssessmentAdministration_ChangeVersion] ON [edfi].[AssessmentAdministration] ([ChangeVersion] ASC)
+ GO
+COMMIT
+
+BEGIN TRANSACTION
+ IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'edfi.AssessmentBatteryPart') AND name = N'UX_AssessmentBatteryPart_ChangeVersion')
+ CREATE INDEX [UX_AssessmentBatteryPart_ChangeVersion] ON [edfi].[AssessmentBatteryPart] ([ChangeVersion] ASC)
+ GO
+COMMIT
+
BEGIN TRANSACTION
IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'edfi.AssessmentItem') AND name = N'UX_AssessmentItem_ChangeVersion')
CREATE INDEX [UX_AssessmentItem_ChangeVersion] ON [edfi].[AssessmentItem] ([ChangeVersion] ASC)
@@ -33,6 +45,12 @@ BEGIN TRANSACTION
GO
COMMIT
+BEGIN TRANSACTION
+ IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'edfi.AssesssmentAdministrationParticipation') AND name = N'UX_AssesssmentAdministrationParticipation_ChangeVersion')
+ CREATE INDEX [UX_AssesssmentAdministrationParticipation_ChangeVersion] ON [edfi].[AssesssmentAdministrationParticipation] ([ChangeVersion] ASC)
+ GO
+COMMIT
+
BEGIN TRANSACTION
IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'edfi.BalanceSheetDimension') AND name = N'UX_BalanceSheetDimension_ChangeVersion')
CREATE INDEX [UX_BalanceSheetDimension_ChangeVersion] ON [edfi].[BalanceSheetDimension] ([ChangeVersion] ASC)
@@ -507,6 +525,18 @@ BEGIN TRANSACTION
GO
COMMIT
+BEGIN TRANSACTION
+ IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'edfi.StudentAssessmentRegistration') AND name = N'UX_StudentAssessmentRegistration_ChangeVersion')
+ CREATE INDEX [UX_StudentAssessmentRegistration_ChangeVersion] ON [edfi].[StudentAssessmentRegistration] ([ChangeVersion] ASC)
+ GO
+COMMIT
+
+BEGIN TRANSACTION
+ IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'edfi.StudentAssessmentRegistrationBatteryPartAssociation') AND name = N'UX_StudentAssessmentRegistrationBatteryPartAssociation_ChangeVersion')
+ CREATE INDEX [UX_StudentAssessmentRegistrationBatteryPartAssociation_ChangeVersion] ON [edfi].[StudentAssessmentRegistrationBatteryPartAssociation] ([ChangeVersion] ASC)
+ GO
+COMMIT
+
BEGIN TRANSACTION
IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'edfi.StudentCohortAssociation') AND name = N'UX_StudentCohortAssociation_ChangeVersion')
CREATE INDEX [UX_StudentCohortAssociation_ChangeVersion] ON [edfi].[StudentCohortAssociation] ([ChangeVersion] ASC)
@@ -537,6 +567,12 @@ BEGIN TRANSACTION
GO
COMMIT
+BEGIN TRANSACTION
+ IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'edfi.StudentEducationOrganizationAssessmentAccommodation') AND name = N'UX_StudentEducationOrganizationAssessmentAccommodation_ChangeVersion')
+ CREATE INDEX [UX_StudentEducationOrganizationAssessmentAccommodation_ChangeVersion] ON [edfi].[StudentEducationOrganizationAssessmentAccommodation] ([ChangeVersion] ASC)
+ GO
+COMMIT
+
BEGIN TRANSACTION
IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'edfi.StudentEducationOrganizationAssociation') AND name = N'UX_StudentEducationOrganizationAssociation_ChangeVersion')
CREATE INDEX [UX_StudentEducationOrganizationAssociation_ChangeVersion] ON [edfi].[StudentEducationOrganizationAssociation] ([ChangeVersion] ASC)
diff --git a/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/MsSql/Structure/Ods/Changes/0200-CreateTrackedChangeTables.sql b/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/MsSql/Structure/Ods/Changes/0200-CreateTrackedChangeTables.sql
index 8375b013f8..1603f8fd6a 100644
--- a/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/MsSql/Structure/Ods/Changes/0200-CreateTrackedChangeTables.sql
+++ b/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/MsSql/Structure/Ods/Changes/0200-CreateTrackedChangeTables.sql
@@ -48,6 +48,38 @@ CREATE TABLE [tracked_changes_edfi].[Assessment]
CreateDate DateTime2 NOT NULL DEFAULT (getutcdate()),
CONSTRAINT PK_Assessment PRIMARY KEY CLUSTERED (ChangeVersion)
)
+IF NOT EXISTS (SELECT * FROM sys.tables WHERE object_id = OBJECT_ID(N'[tracked_changes_edfi].[AssessmentAdministration]'))
+CREATE TABLE [tracked_changes_edfi].[AssessmentAdministration]
+(
+ OldAdministrationIdentifier [NVARCHAR](255) NOT NULL,
+ OldAssessmentIdentifier [NVARCHAR](60) NOT NULL,
+ OldAssigningEducationOrganizationId [BIGINT] NOT NULL,
+ OldNamespace [NVARCHAR](255) NOT NULL,
+ NewAdministrationIdentifier [NVARCHAR](255) NULL,
+ NewAssessmentIdentifier [NVARCHAR](60) NULL,
+ NewAssigningEducationOrganizationId [BIGINT] NULL,
+ NewNamespace [NVARCHAR](255) NULL,
+ Id uniqueidentifier NOT NULL,
+ ChangeVersion bigint NOT NULL,
+ Discriminator [NVARCHAR](128) NULL,
+ CreateDate DateTime2 NOT NULL DEFAULT (getutcdate()),
+ CONSTRAINT PK_AssessmentAdministration PRIMARY KEY CLUSTERED (ChangeVersion)
+)
+IF NOT EXISTS (SELECT * FROM sys.tables WHERE object_id = OBJECT_ID(N'[tracked_changes_edfi].[AssessmentBatteryPart]'))
+CREATE TABLE [tracked_changes_edfi].[AssessmentBatteryPart]
+(
+ OldAssessmentBatteryPartName [NVARCHAR](65) NOT NULL,
+ OldAssessmentIdentifier [NVARCHAR](60) NOT NULL,
+ OldNamespace [NVARCHAR](255) NOT NULL,
+ NewAssessmentBatteryPartName [NVARCHAR](65) NULL,
+ NewAssessmentIdentifier [NVARCHAR](60) NULL,
+ NewNamespace [NVARCHAR](255) NULL,
+ Id uniqueidentifier NOT NULL,
+ ChangeVersion bigint NOT NULL,
+ Discriminator [NVARCHAR](128) NULL,
+ CreateDate DateTime2 NOT NULL DEFAULT (getutcdate()),
+ CONSTRAINT PK_AssessmentBatteryPart PRIMARY KEY CLUSTERED (ChangeVersion)
+)
IF NOT EXISTS (SELECT * FROM sys.tables WHERE object_id = OBJECT_ID(N'[tracked_changes_edfi].[AssessmentItem]'))
CREATE TABLE [tracked_changes_edfi].[AssessmentItem]
(
@@ -78,6 +110,25 @@ CREATE TABLE [tracked_changes_edfi].[AssessmentScoreRangeLearningStandard]
CreateDate DateTime2 NOT NULL DEFAULT (getutcdate()),
CONSTRAINT PK_AssessmentScoreRangeLearningStandard PRIMARY KEY CLUSTERED (ChangeVersion)
)
+IF NOT EXISTS (SELECT * FROM sys.tables WHERE object_id = OBJECT_ID(N'[tracked_changes_edfi].[AssesssmentAdministrationParticipation]'))
+CREATE TABLE [tracked_changes_edfi].[AssesssmentAdministrationParticipation]
+(
+ OldAdministrationIdentifier [NVARCHAR](255) NOT NULL,
+ OldAssessmentIdentifier [NVARCHAR](60) NOT NULL,
+ OldAssigningEducationOrganizationId [BIGINT] NOT NULL,
+ OldNamespace [NVARCHAR](255) NOT NULL,
+ OldParticipatingEducationOrganizationId [BIGINT] NOT NULL,
+ NewAdministrationIdentifier [NVARCHAR](255) NULL,
+ NewAssessmentIdentifier [NVARCHAR](60) NULL,
+ NewAssigningEducationOrganizationId [BIGINT] NULL,
+ NewNamespace [NVARCHAR](255) NULL,
+ NewParticipatingEducationOrganizationId [BIGINT] NULL,
+ Id uniqueidentifier NOT NULL,
+ ChangeVersion bigint NOT NULL,
+ Discriminator [NVARCHAR](128) NULL,
+ CreateDate DateTime2 NOT NULL DEFAULT (getutcdate()),
+ CONSTRAINT PK_AssesssmentAdministrationParticipation PRIMARY KEY CLUSTERED (ChangeVersion)
+)
IF NOT EXISTS (SELECT * FROM sys.tables WHERE object_id = OBJECT_ID(N'[tracked_changes_edfi].[BalanceSheetDimension]'))
CREATE TABLE [tracked_changes_edfi].[BalanceSheetDimension]
(
@@ -1500,6 +1551,54 @@ CREATE TABLE [tracked_changes_edfi].[StudentAssessmentEducationOrganizationAssoc
CreateDate DateTime2 NOT NULL DEFAULT (getutcdate()),
CONSTRAINT PK_StudentAssessmentEducationOrganizationAssociation PRIMARY KEY CLUSTERED (ChangeVersion)
)
+IF NOT EXISTS (SELECT * FROM sys.tables WHERE object_id = OBJECT_ID(N'[tracked_changes_edfi].[StudentAssessmentRegistration]'))
+CREATE TABLE [tracked_changes_edfi].[StudentAssessmentRegistration]
+(
+ OldAdministrationIdentifier [NVARCHAR](255) NOT NULL,
+ OldAssessmentIdentifier [NVARCHAR](60) NOT NULL,
+ OldAssigningEducationOrganizationId [BIGINT] NOT NULL,
+ OldEducationOrganizationId [BIGINT] NOT NULL,
+ OldNamespace [NVARCHAR](255) NOT NULL,
+ OldStudentUSI [INT] NOT NULL,
+ OldStudentUniqueId [NVARCHAR](32) NOT NULL,
+ NewAdministrationIdentifier [NVARCHAR](255) NULL,
+ NewAssessmentIdentifier [NVARCHAR](60) NULL,
+ NewAssigningEducationOrganizationId [BIGINT] NULL,
+ NewEducationOrganizationId [BIGINT] NULL,
+ NewNamespace [NVARCHAR](255) NULL,
+ NewStudentUSI [INT] NULL,
+ NewStudentUniqueId [NVARCHAR](32) NULL,
+ Id uniqueidentifier NOT NULL,
+ ChangeVersion bigint NOT NULL,
+ Discriminator [NVARCHAR](128) NULL,
+ CreateDate DateTime2 NOT NULL DEFAULT (getutcdate()),
+ CONSTRAINT PK_StudentAssessmentRegistration PRIMARY KEY CLUSTERED (ChangeVersion)
+)
+IF NOT EXISTS (SELECT * FROM sys.tables WHERE object_id = OBJECT_ID(N'[tracked_changes_edfi].[StudentAssessmentRegistrationBatteryPartAssociation]'))
+CREATE TABLE [tracked_changes_edfi].[StudentAssessmentRegistrationBatteryPartAssociation]
+(
+ OldAdministrationIdentifier [NVARCHAR](255) NOT NULL,
+ OldAssessmentBatteryPartName [NVARCHAR](65) NOT NULL,
+ OldAssessmentIdentifier [NVARCHAR](60) NOT NULL,
+ OldAssigningEducationOrganizationId [BIGINT] NOT NULL,
+ OldEducationOrganizationId [BIGINT] NOT NULL,
+ OldNamespace [NVARCHAR](255) NOT NULL,
+ OldStudentUSI [INT] NOT NULL,
+ OldStudentUniqueId [NVARCHAR](32) NOT NULL,
+ NewAdministrationIdentifier [NVARCHAR](255) NULL,
+ NewAssessmentBatteryPartName [NVARCHAR](65) NULL,
+ NewAssessmentIdentifier [NVARCHAR](60) NULL,
+ NewAssigningEducationOrganizationId [BIGINT] NULL,
+ NewEducationOrganizationId [BIGINT] NULL,
+ NewNamespace [NVARCHAR](255) NULL,
+ NewStudentUSI [INT] NULL,
+ NewStudentUniqueId [NVARCHAR](32) NULL,
+ Id uniqueidentifier NOT NULL,
+ ChangeVersion bigint NOT NULL,
+ Discriminator [NVARCHAR](128) NULL,
+ CreateDate DateTime2 NOT NULL DEFAULT (getutcdate()),
+ CONSTRAINT PK_StudentAssessmentRegistrationBatteryPartAssociation PRIMARY KEY CLUSTERED (ChangeVersion)
+)
IF NOT EXISTS (SELECT * FROM sys.tables WHERE object_id = OBJECT_ID(N'[tracked_changes_edfi].[StudentCohortAssociation]'))
CREATE TABLE [tracked_changes_edfi].[StudentCohortAssociation]
(
@@ -1611,6 +1710,21 @@ CREATE TABLE [tracked_changes_edfi].[StudentDisciplineIncidentNonOffenderAssocia
CreateDate DateTime2 NOT NULL DEFAULT (getutcdate()),
CONSTRAINT PK_StudentDisciplineIncidentNonOffenderAssociation PRIMARY KEY CLUSTERED (ChangeVersion)
)
+IF NOT EXISTS (SELECT * FROM sys.tables WHERE object_id = OBJECT_ID(N'[tracked_changes_edfi].[StudentEducationOrganizationAssessmentAccommodation]'))
+CREATE TABLE [tracked_changes_edfi].[StudentEducationOrganizationAssessmentAccommodation]
+(
+ OldEducationOrganizationId [BIGINT] NOT NULL,
+ OldStudentUSI [INT] NOT NULL,
+ OldStudentUniqueId [NVARCHAR](32) NOT NULL,
+ NewEducationOrganizationId [BIGINT] NULL,
+ NewStudentUSI [INT] NULL,
+ NewStudentUniqueId [NVARCHAR](32) NULL,
+ Id uniqueidentifier NOT NULL,
+ ChangeVersion bigint NOT NULL,
+ Discriminator [NVARCHAR](128) NULL,
+ CreateDate DateTime2 NOT NULL DEFAULT (getutcdate()),
+ CONSTRAINT PK_StudentEducationOrganizationAssessmentAccommodation PRIMARY KEY CLUSTERED (ChangeVersion)
+)
IF NOT EXISTS (SELECT * FROM sys.tables WHERE object_id = OBJECT_ID(N'[tracked_changes_edfi].[StudentEducationOrganizationAssociation]'))
CREATE TABLE [tracked_changes_edfi].[StudentEducationOrganizationAssociation]
(
@@ -1900,6 +2014,7 @@ CREATE TABLE [tracked_changes_edfi].[StudentSpecialEducationProgramEligibilityAs
(
OldConsentToEvaluationReceivedDate [DATE] NOT NULL,
OldEducationOrganizationId [BIGINT] NOT NULL,
+ OldProgramEducationOrganizationId [BIGINT] NOT NULL,
OldProgramName [NVARCHAR](60) NOT NULL,
OldProgramTypeDescriptorId [INT] NOT NULL,
OldProgramTypeDescriptorNamespace [NVARCHAR](255) NOT NULL,
@@ -1908,6 +2023,7 @@ CREATE TABLE [tracked_changes_edfi].[StudentSpecialEducationProgramEligibilityAs
OldStudentUniqueId [NVARCHAR](32) NOT NULL,
NewConsentToEvaluationReceivedDate [DATE] NULL,
NewEducationOrganizationId [BIGINT] NULL,
+ NewProgramEducationOrganizationId [BIGINT] NULL,
NewProgramName [NVARCHAR](60) NULL,
NewProgramTypeDescriptorId [INT] NULL,
NewProgramTypeDescriptorNamespace [NVARCHAR](255) NULL,
diff --git a/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/MsSql/Structure/Ods/Changes/0210-CreateTriggersForChangeVersionAndKeyChanges.sql b/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/MsSql/Structure/Ods/Changes/0210-CreateTriggersForChangeVersionAndKeyChanges.sql
index 7569ad3b10..067c7bd4b2 100644
--- a/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/MsSql/Structure/Ods/Changes/0210-CreateTriggersForChangeVersionAndKeyChanges.sql
+++ b/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/MsSql/Structure/Ods/Changes/0210-CreateTriggersForChangeVersionAndKeyChanges.sql
@@ -42,6 +42,32 @@ BEGIN
END
GO
+DROP TRIGGER IF EXISTS [edfi].[edfi_AssessmentAdministration_TR_UpdateChangeVersion]
+GO
+
+CREATE TRIGGER [edfi].[edfi_AssessmentAdministration_TR_UpdateChangeVersion] ON [edfi].[AssessmentAdministration] AFTER UPDATE AS
+BEGIN
+ SET NOCOUNT ON;
+ UPDATE [edfi].[AssessmentAdministration]
+ SET ChangeVersion = (NEXT VALUE FOR [changes].[ChangeVersionSequence])
+ FROM [edfi].[AssessmentAdministration] u
+ WHERE EXISTS (SELECT 1 FROM inserted i WHERE i.id = u.id);
+END
+GO
+
+DROP TRIGGER IF EXISTS [edfi].[edfi_AssessmentBatteryPart_TR_UpdateChangeVersion]
+GO
+
+CREATE TRIGGER [edfi].[edfi_AssessmentBatteryPart_TR_UpdateChangeVersion] ON [edfi].[AssessmentBatteryPart] AFTER UPDATE AS
+BEGIN
+ SET NOCOUNT ON;
+ UPDATE [edfi].[AssessmentBatteryPart]
+ SET ChangeVersion = (NEXT VALUE FOR [changes].[ChangeVersionSequence])
+ FROM [edfi].[AssessmentBatteryPart] u
+ WHERE EXISTS (SELECT 1 FROM inserted i WHERE i.id = u.id);
+END
+GO
+
DROP TRIGGER IF EXISTS [edfi].[edfi_AssessmentItem_TR_UpdateChangeVersion]
GO
@@ -68,6 +94,19 @@ BEGIN
END
GO
+DROP TRIGGER IF EXISTS [edfi].[edfi_AssesssmentAdministrationParticipation_TR_UpdateChangeVersion]
+GO
+
+CREATE TRIGGER [edfi].[edfi_AssesssmentAdministrationParticipation_TR_UpdateChangeVersion] ON [edfi].[AssesssmentAdministrationParticipation] AFTER UPDATE AS
+BEGIN
+ SET NOCOUNT ON;
+ UPDATE [edfi].[AssesssmentAdministrationParticipation]
+ SET ChangeVersion = (NEXT VALUE FOR [changes].[ChangeVersionSequence])
+ FROM [edfi].[AssesssmentAdministrationParticipation] u
+ WHERE EXISTS (SELECT 1 FROM inserted i WHERE i.id = u.id);
+END
+GO
+
DROP TRIGGER IF EXISTS [edfi].[edfi_BalanceSheetDimension_TR_UpdateChangeVersion]
GO
@@ -1273,6 +1312,32 @@ BEGIN
END
GO
+DROP TRIGGER IF EXISTS [edfi].[edfi_StudentAssessmentRegistration_TR_UpdateChangeVersion]
+GO
+
+CREATE TRIGGER [edfi].[edfi_StudentAssessmentRegistration_TR_UpdateChangeVersion] ON [edfi].[StudentAssessmentRegistration] AFTER UPDATE AS
+BEGIN
+ SET NOCOUNT ON;
+ UPDATE [edfi].[StudentAssessmentRegistration]
+ SET ChangeVersion = (NEXT VALUE FOR [changes].[ChangeVersionSequence])
+ FROM [edfi].[StudentAssessmentRegistration] u
+ WHERE EXISTS (SELECT 1 FROM inserted i WHERE i.id = u.id);
+END
+GO
+
+DROP TRIGGER IF EXISTS [edfi].[edfi_StudentAssessmentRegistrationBatteryPartAssociation_TR_UpdateChangeVersion]
+GO
+
+CREATE TRIGGER [edfi].[edfi_StudentAssessmentRegistrationBatteryPartAssociation_TR_UpdateChangeVersion] ON [edfi].[StudentAssessmentRegistrationBatteryPartAssociation] AFTER UPDATE AS
+BEGIN
+ SET NOCOUNT ON;
+ UPDATE [edfi].[StudentAssessmentRegistrationBatteryPartAssociation]
+ SET ChangeVersion = (NEXT VALUE FOR [changes].[ChangeVersionSequence])
+ FROM [edfi].[StudentAssessmentRegistrationBatteryPartAssociation] u
+ WHERE EXISTS (SELECT 1 FROM inserted i WHERE i.id = u.id);
+END
+GO
+
DROP TRIGGER IF EXISTS [edfi].[edfi_StudentCohortAssociation_TR_UpdateChangeVersion]
GO
@@ -1338,6 +1403,19 @@ BEGIN
END
GO
+DROP TRIGGER IF EXISTS [edfi].[edfi_StudentEducationOrganizationAssessmentAccommodation_TR_UpdateChangeVersion]
+GO
+
+CREATE TRIGGER [edfi].[edfi_StudentEducationOrganizationAssessmentAccommodation_TR_UpdateChangeVersion] ON [edfi].[StudentEducationOrganizationAssessmentAccommodation] AFTER UPDATE AS
+BEGIN
+ SET NOCOUNT ON;
+ UPDATE [edfi].[StudentEducationOrganizationAssessmentAccommodation]
+ SET ChangeVersion = (NEXT VALUE FOR [changes].[ChangeVersionSequence])
+ FROM [edfi].[StudentEducationOrganizationAssessmentAccommodation] u
+ WHERE EXISTS (SELECT 1 FROM inserted i WHERE i.id = u.id);
+END
+GO
+
DROP TRIGGER IF EXISTS [edfi].[edfi_StudentEducationOrganizationAssociation_TR_UpdateChangeVersion]
GO
diff --git a/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/MsSql/Structure/Ods/Changes/0220-CreateTriggersForDeleteTracking.sql b/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/MsSql/Structure/Ods/Changes/0220-CreateTriggersForDeleteTracking.sql
index 465a4a56d9..a25dc6223c 100644
--- a/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/MsSql/Structure/Ods/Changes/0220-CreateTriggersForDeleteTracking.sql
+++ b/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/MsSql/Structure/Ods/Changes/0220-CreateTriggersForDeleteTracking.sql
@@ -294,6 +294,46 @@ ALTER TABLE [edfi].[Assessment] ENABLE TRIGGER [edfi_Assessment_TR_DeleteTrackin
GO
+DROP TRIGGER IF EXISTS [edfi].[edfi_AssessmentAdministration_TR_DeleteTracking]
+GO
+
+CREATE TRIGGER [edfi].[edfi_AssessmentAdministration_TR_DeleteTracking] ON [edfi].[AssessmentAdministration] AFTER DELETE AS
+BEGIN
+ IF @@rowcount = 0
+ RETURN
+
+ SET NOCOUNT ON
+
+ INSERT INTO [tracked_changes_edfi].[AssessmentAdministration](OldAdministrationIdentifier, OldAssessmentIdentifier, OldAssigningEducationOrganizationId, OldNamespace, Id, Discriminator, ChangeVersion)
+ SELECT d.AdministrationIdentifier, d.AssessmentIdentifier, d.AssigningEducationOrganizationId, d.Namespace, d.Id, d.Discriminator, (NEXT VALUE FOR [changes].[ChangeVersionSequence])
+ FROM deleted d
+END
+GO
+
+ALTER TABLE [edfi].[AssessmentAdministration] ENABLE TRIGGER [edfi_AssessmentAdministration_TR_DeleteTracking]
+GO
+
+
+DROP TRIGGER IF EXISTS [edfi].[edfi_AssessmentBatteryPart_TR_DeleteTracking]
+GO
+
+CREATE TRIGGER [edfi].[edfi_AssessmentBatteryPart_TR_DeleteTracking] ON [edfi].[AssessmentBatteryPart] AFTER DELETE AS
+BEGIN
+ IF @@rowcount = 0
+ RETURN
+
+ SET NOCOUNT ON
+
+ INSERT INTO [tracked_changes_edfi].[AssessmentBatteryPart](OldAssessmentBatteryPartName, OldAssessmentIdentifier, OldNamespace, Id, Discriminator, ChangeVersion)
+ SELECT d.AssessmentBatteryPartName, d.AssessmentIdentifier, d.Namespace, d.Id, d.Discriminator, (NEXT VALUE FOR [changes].[ChangeVersionSequence])
+ FROM deleted d
+END
+GO
+
+ALTER TABLE [edfi].[AssessmentBatteryPart] ENABLE TRIGGER [edfi_AssessmentBatteryPart_TR_DeleteTracking]
+GO
+
+
DROP TRIGGER IF EXISTS [edfi].[edfi_AssessmentCategoryDescriptor_TR_DeleteTracking]
GO
@@ -460,6 +500,26 @@ ALTER TABLE [edfi].[AssessmentScoreRangeLearningStandard] ENABLE TRIGGER [edfi_A
GO
+DROP TRIGGER IF EXISTS [edfi].[edfi_AssesssmentAdministrationParticipation_TR_DeleteTracking]
+GO
+
+CREATE TRIGGER [edfi].[edfi_AssesssmentAdministrationParticipation_TR_DeleteTracking] ON [edfi].[AssesssmentAdministrationParticipation] AFTER DELETE AS
+BEGIN
+ IF @@rowcount = 0
+ RETURN
+
+ SET NOCOUNT ON
+
+ INSERT INTO [tracked_changes_edfi].[AssesssmentAdministrationParticipation](OldAdministrationIdentifier, OldAssessmentIdentifier, OldAssigningEducationOrganizationId, OldNamespace, OldParticipatingEducationOrganizationId, Id, Discriminator, ChangeVersion)
+ SELECT d.AdministrationIdentifier, d.AssessmentIdentifier, d.AssigningEducationOrganizationId, d.Namespace, d.ParticipatingEducationOrganizationId, d.Id, d.Discriminator, (NEXT VALUE FOR [changes].[ChangeVersionSequence])
+ FROM deleted d
+END
+GO
+
+ALTER TABLE [edfi].[AssesssmentAdministrationParticipation] ENABLE TRIGGER [edfi_AssesssmentAdministrationParticipation_TR_DeleteTracking]
+GO
+
+
DROP TRIGGER IF EXISTS [edfi].[edfi_AssignmentLateStatusDescriptor_TR_DeleteTracking]
GO
@@ -4984,6 +5044,27 @@ ALTER TABLE [edfi].[SchoolYearType] ENABLE TRIGGER [edfi_SchoolYearType_TR_Delet
GO
+DROP TRIGGER IF EXISTS [edfi].[edfi_Section504DisabilityTypeDescriptor_TR_DeleteTracking]
+GO
+
+CREATE TRIGGER [edfi].[edfi_Section504DisabilityTypeDescriptor_TR_DeleteTracking] ON [edfi].[Section504DisabilityTypeDescriptor] AFTER DELETE AS
+BEGIN
+ IF @@rowcount = 0
+ RETURN
+
+ SET NOCOUNT ON
+
+ INSERT INTO [tracked_changes_edfi].[Descriptor](OldDescriptorId, OldCodeValue, OldNamespace, Id, Discriminator, ChangeVersion)
+ SELECT d.Section504DisabilityTypeDescriptorId, b.CodeValue, b.Namespace, b.Id, 'edfi.Section504DisabilityTypeDescriptor', (NEXT VALUE FOR [changes].[ChangeVersionSequence])
+ FROM deleted d
+ INNER JOIN edfi.Descriptor b ON d.Section504DisabilityTypeDescriptorId = b.DescriptorId
+END
+GO
+
+ALTER TABLE [edfi].[Section504DisabilityTypeDescriptor] ENABLE TRIGGER [edfi_Section504DisabilityTypeDescriptor_TR_DeleteTracking]
+GO
+
+
DROP TRIGGER IF EXISTS [edfi].[edfi_Section_TR_DeleteTracking]
GO
@@ -5700,6 +5781,50 @@ ALTER TABLE [edfi].[StudentAssessmentEducationOrganizationAssociation] ENABLE TR
GO
+DROP TRIGGER IF EXISTS [edfi].[edfi_StudentAssessmentRegistration_TR_DeleteTracking]
+GO
+
+CREATE TRIGGER [edfi].[edfi_StudentAssessmentRegistration_TR_DeleteTracking] ON [edfi].[StudentAssessmentRegistration] AFTER DELETE AS
+BEGIN
+ IF @@rowcount = 0
+ RETURN
+
+ SET NOCOUNT ON
+
+ INSERT INTO [tracked_changes_edfi].[StudentAssessmentRegistration](OldAdministrationIdentifier, OldAssessmentIdentifier, OldAssigningEducationOrganizationId, OldEducationOrganizationId, OldNamespace, OldStudentUSI, OldStudentUniqueId, Id, Discriminator, ChangeVersion)
+ SELECT d.AdministrationIdentifier, d.AssessmentIdentifier, d.AssigningEducationOrganizationId, d.EducationOrganizationId, d.Namespace, d.StudentUSI, j0.StudentUniqueId, d.Id, d.Discriminator, (NEXT VALUE FOR [changes].[ChangeVersionSequence])
+ FROM deleted d
+ INNER JOIN edfi.Student j0
+ ON d.StudentUSI = j0.StudentUSI
+END
+GO
+
+ALTER TABLE [edfi].[StudentAssessmentRegistration] ENABLE TRIGGER [edfi_StudentAssessmentRegistration_TR_DeleteTracking]
+GO
+
+
+DROP TRIGGER IF EXISTS [edfi].[edfi_StudentAssessmentRegistrationBatteryPartAssociation_TR_DeleteTracking]
+GO
+
+CREATE TRIGGER [edfi].[edfi_StudentAssessmentRegistrationBatteryPartAssociation_TR_DeleteTracking] ON [edfi].[StudentAssessmentRegistrationBatteryPartAssociation] AFTER DELETE AS
+BEGIN
+ IF @@rowcount = 0
+ RETURN
+
+ SET NOCOUNT ON
+
+ INSERT INTO [tracked_changes_edfi].[StudentAssessmentRegistrationBatteryPartAssociation](OldAdministrationIdentifier, OldAssessmentBatteryPartName, OldAssessmentIdentifier, OldAssigningEducationOrganizationId, OldEducationOrganizationId, OldNamespace, OldStudentUSI, OldStudentUniqueId, Id, Discriminator, ChangeVersion)
+ SELECT d.AdministrationIdentifier, d.AssessmentBatteryPartName, d.AssessmentIdentifier, d.AssigningEducationOrganizationId, d.EducationOrganizationId, d.Namespace, d.StudentUSI, j0.StudentUniqueId, d.Id, d.Discriminator, (NEXT VALUE FOR [changes].[ChangeVersionSequence])
+ FROM deleted d
+ INNER JOIN edfi.Student j0
+ ON d.StudentUSI = j0.StudentUSI
+END
+GO
+
+ALTER TABLE [edfi].[StudentAssessmentRegistrationBatteryPartAssociation] ENABLE TRIGGER [edfi_StudentAssessmentRegistrationBatteryPartAssociation_TR_DeleteTracking]
+GO
+
+
DROP TRIGGER IF EXISTS [edfi].[edfi_StudentCharacteristicDescriptor_TR_DeleteTracking]
GO
@@ -5839,6 +5964,28 @@ ALTER TABLE [edfi].[StudentDisciplineIncidentNonOffenderAssociation] ENABLE TRIG
GO
+DROP TRIGGER IF EXISTS [edfi].[edfi_StudentEducationOrganizationAssessmentAccommodation_TR_DeleteTracking]
+GO
+
+CREATE TRIGGER [edfi].[edfi_StudentEducationOrganizationAssessmentAccommodation_TR_DeleteTracking] ON [edfi].[StudentEducationOrganizationAssessmentAccommodation] AFTER DELETE AS
+BEGIN
+ IF @@rowcount = 0
+ RETURN
+
+ SET NOCOUNT ON
+
+ INSERT INTO [tracked_changes_edfi].[StudentEducationOrganizationAssessmentAccommodation](OldEducationOrganizationId, OldStudentUSI, OldStudentUniqueId, Id, Discriminator, ChangeVersion)
+ SELECT d.EducationOrganizationId, d.StudentUSI, j0.StudentUniqueId, d.Id, d.Discriminator, (NEXT VALUE FOR [changes].[ChangeVersionSequence])
+ FROM deleted d
+ INNER JOIN edfi.Student j0
+ ON d.StudentUSI = j0.StudentUSI
+END
+GO
+
+ALTER TABLE [edfi].[StudentEducationOrganizationAssessmentAccommodation] ENABLE TRIGGER [edfi_StudentEducationOrganizationAssessmentAccommodation_TR_DeleteTracking]
+GO
+
+
DROP TRIGGER IF EXISTS [edfi].[edfi_StudentEducationOrganizationAssociation_TR_DeleteTracking]
GO
@@ -6152,8 +6299,8 @@ BEGIN
SET NOCOUNT ON
- INSERT INTO [tracked_changes_edfi].[StudentSpecialEducationProgramEligibilityAssociation](OldConsentToEvaluationReceivedDate, OldEducationOrganizationId, OldProgramName, OldProgramTypeDescriptorId, OldProgramTypeDescriptorNamespace, OldProgramTypeDescriptorCodeValue, OldStudentUSI, OldStudentUniqueId, Id, Discriminator, ChangeVersion)
- SELECT d.ConsentToEvaluationReceivedDate, d.EducationOrganizationId, d.ProgramName, d.ProgramTypeDescriptorId, j0.Namespace, j0.CodeValue, d.StudentUSI, j1.StudentUniqueId, d.Id, d.Discriminator, (NEXT VALUE FOR [changes].[ChangeVersionSequence])
+ INSERT INTO [tracked_changes_edfi].[StudentSpecialEducationProgramEligibilityAssociation](OldConsentToEvaluationReceivedDate, OldEducationOrganizationId, OldProgramEducationOrganizationId, OldProgramName, OldProgramTypeDescriptorId, OldProgramTypeDescriptorNamespace, OldProgramTypeDescriptorCodeValue, OldStudentUSI, OldStudentUniqueId, Id, Discriminator, ChangeVersion)
+ SELECT d.ConsentToEvaluationReceivedDate, d.EducationOrganizationId, d.ProgramEducationOrganizationId, d.ProgramName, d.ProgramTypeDescriptorId, j0.Namespace, j0.CodeValue, d.StudentUSI, j1.StudentUniqueId, d.Id, d.Discriminator, (NEXT VALUE FOR [changes].[ChangeVersionSequence])
FROM deleted d
INNER JOIN edfi.Descriptor j0
ON d.ProgramTypeDescriptorId = j0.DescriptorId
diff --git a/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/MsSql/Structure/Ods/RecordOwnership/0010-AddColumnOwnershipTokenForTable.sql b/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/MsSql/Structure/Ods/RecordOwnership/0010-AddColumnOwnershipTokenForTable.sql
index 313f79ecef..31e97c18fc 100644
--- a/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/MsSql/Structure/Ods/RecordOwnership/0010-AddColumnOwnershipTokenForTable.sql
+++ b/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/MsSql/Structure/Ods/RecordOwnership/0010-AddColumnOwnershipTokenForTable.sql
@@ -9,10 +9,16 @@ ALTER TABLE [edfi].[AccountabilityRating] ADD [CreatedByOwnershipTokenId] SMALLI
ALTER TABLE [edfi].[Assessment] ADD [CreatedByOwnershipTokenId] SMALLINT NULL;
+ALTER TABLE [edfi].[AssessmentAdministration] ADD [CreatedByOwnershipTokenId] SMALLINT NULL;
+
+ALTER TABLE [edfi].[AssessmentBatteryPart] ADD [CreatedByOwnershipTokenId] SMALLINT NULL;
+
ALTER TABLE [edfi].[AssessmentItem] ADD [CreatedByOwnershipTokenId] SMALLINT NULL;
ALTER TABLE [edfi].[AssessmentScoreRangeLearningStandard] ADD [CreatedByOwnershipTokenId] SMALLINT NULL;
+ALTER TABLE [edfi].[AssesssmentAdministrationParticipation] ADD [CreatedByOwnershipTokenId] SMALLINT NULL;
+
ALTER TABLE [edfi].[BalanceSheetDimension] ADD [CreatedByOwnershipTokenId] SMALLINT NULL;
ALTER TABLE [edfi].[BellSchedule] ADD [CreatedByOwnershipTokenId] SMALLINT NULL;
@@ -171,6 +177,10 @@ ALTER TABLE [edfi].[StudentAssessment] ADD [CreatedByOwnershipTokenId] SMALLINT
ALTER TABLE [edfi].[StudentAssessmentEducationOrganizationAssociation] ADD [CreatedByOwnershipTokenId] SMALLINT NULL;
+ALTER TABLE [edfi].[StudentAssessmentRegistration] ADD [CreatedByOwnershipTokenId] SMALLINT NULL;
+
+ALTER TABLE [edfi].[StudentAssessmentRegistrationBatteryPartAssociation] ADD [CreatedByOwnershipTokenId] SMALLINT NULL;
+
ALTER TABLE [edfi].[StudentCohortAssociation] ADD [CreatedByOwnershipTokenId] SMALLINT NULL;
ALTER TABLE [edfi].[StudentCompetencyObjective] ADD [CreatedByOwnershipTokenId] SMALLINT NULL;
@@ -181,6 +191,8 @@ ALTER TABLE [edfi].[StudentDisciplineIncidentBehaviorAssociation] ADD [CreatedBy
ALTER TABLE [edfi].[StudentDisciplineIncidentNonOffenderAssociation] ADD [CreatedByOwnershipTokenId] SMALLINT NULL;
+ALTER TABLE [edfi].[StudentEducationOrganizationAssessmentAccommodation] ADD [CreatedByOwnershipTokenId] SMALLINT NULL;
+
ALTER TABLE [edfi].[StudentEducationOrganizationAssociation] ADD [CreatedByOwnershipTokenId] SMALLINT NULL;
ALTER TABLE [edfi].[StudentEducationOrganizationResponsibilityAssociation] ADD [CreatedByOwnershipTokenId] SMALLINT NULL;
diff --git a/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/PgSql/Data/Security/2200-AssessmentRegistration-security-metadata.sql b/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/PgSql/Data/Security/2200-AssessmentRegistration-security-metadata.sql
new file mode 100644
index 0000000000..296124dceb
--- /dev/null
+++ b/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/PgSql/Data/Security/2200-AssessmentRegistration-security-metadata.sql
@@ -0,0 +1,2112 @@
+
+-- SPDX-License-Identifier: Apache-2.0
+-- Licensed to the Ed-Fi Alliance under one or more agreements.
+-- The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0.
+-- See the LICENSE and NOTICES files in the project root for more information.
+
+DO $$
+DECLARE
+ claim_id INTEGER;
+ claim_name VARCHAR(2048);
+ parent_resource_claim_id INTEGER;
+ existing_parent_resource_claim_id INTEGER;
+ claim_set_id INTEGER;
+ claim_set_name VARCHAR(255);
+ authorization_strategy_id INTEGER;
+ create_action_id INTEGER;
+ read_action_id INTEGER;
+ update_action_id INTEGER;
+ delete_action_id INTEGER;
+ readchanges_action_id INTEGER;
+ resource_claim_action_id INTEGER;
+ claim_set_resource_claim_action_id INTEGER;
+ claim_id_stack INTEGER ARRAY;
+BEGIN
+ SELECT actionid INTO create_action_id
+ FROM dbo.actions WHERE ActionName = 'Create';
+
+ SELECT actionid INTO read_action_id
+ FROM dbo.actions WHERE ActionName = 'Read';
+
+ SELECT actionid INTO update_action_id
+ FROM dbo.actions WHERE ActionName = 'Update';
+
+ SELECT actionid INTO delete_action_id
+ FROM dbo.actions WHERE ActionName = 'Delete';
+
+ SELECT actionid INTO readchanges_action_id
+ FROM dbo.actions WHERE ActionName = 'ReadChanges';
+
+
+ -- Push claimId to the stack
+ claim_id_stack := array_append(claim_id_stack, claim_id);
+
+ -- Processing children of root
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Resource Claim: 'http://ed-fi.org/ods/identity/claims/domains/assessmentMetadata'
+ ----------------------------------------------------------------------------------------------------------------------------
+ claim_name := 'http://ed-fi.org/ods/identity/claims/domains/assessmentMetadata';
+ claim_id := NULL;
+
+ SELECT ResourceClaimId, ParentResourceClaimId INTO claim_id, existing_parent_resource_claim_id
+ FROM dbo.ResourceClaims
+ WHERE ClaimName = claim_name;
+
+ parent_resource_claim_id := claim_id_stack[array_upper(claim_id_stack, 1)];
+
+ IF claim_id IS NULL THEN
+ RAISE NOTICE 'Creating new claim: %', claim_name;
+
+ INSERT INTO dbo.ResourceClaims(ResourceName, ClaimName, ParentResourceClaimId)
+ VALUES ('assessmentMetadata', 'http://ed-fi.org/ods/identity/claims/domains/assessmentMetadata', parent_resource_claim_id)
+ RETURNING ResourceClaimId
+ INTO claim_id;
+ ELSE
+ IF parent_resource_claim_id != existing_parent_resource_claim_id OR (parent_resource_claim_id IS NULL AND existing_parent_resource_claim_id IS NOT NULL) OR (parent_resource_claim_id IS NOT NULL AND existing_parent_resource_claim_id IS NULL) THEN
+ RAISE NOTICE USING MESSAGE = 'Repointing claim ''' || claim_name || ''' (ResourceClaimId=' || claim_id || ') to new parent (from ResourceClaimId=' || COALESCE(existing_parent_resource_claim_id, 0) || ' to ResourceClaimId=' || COALESCE(parent_resource_claim_id, 0) || ')';
+
+ UPDATE dbo.ResourceClaims
+ SET ParentResourceClaimId = parent_resource_claim_id
+ WHERE ResourceClaimId = claim_id;
+ END IF;
+ END IF;
+
+ -- Setting default authorization metadata
+ RAISE NOTICE USING MESSAGE = 'Deleting default action authorizations for resource claim ''' || claim_name || ''' (claimId=' || claim_id || ').';
+
+ DELETE FROM dbo.ResourceClaimActionAuthorizationStrategies
+ WHERE ResourceClaimActionId IN (SELECT ResourceClaimActionId FROM dbo.ResourceClaimActions WHERE ResourceClaimId = claim_id);
+
+ DELETE FROM dbo.ResourceClaimActions
+ WHERE ResourceClaimId = claim_id;
+
+
+ -- Default Create authorization
+ RAISE NOTICE USING MESSAGE = 'Creating action ''Create'' for resource claim ''' || claim_name || ''' (claimId=' || claim_id || ').';
+
+ INSERT INTO dbo.ResourceClaimActions(ResourceClaimId, ActionId)
+ VALUES (claim_id, Create_action_id)
+ RETURNING ResourceClaimActionId
+ INTO resource_claim_action_id;
+
+
+ authorization_strategy_id := NULL;
+
+ SELECT a.AuthorizationStrategyId INTO authorization_strategy_id
+ FROM dbo.AuthorizationStrategies a
+ WHERE a.AuthorizationStrategyName = 'NamespaceBased';
+
+ IF authorization_strategy_id IS NULL THEN
+ RAISE EXCEPTION USING MESSAGE = 'AuthorizationStrategy does not exist: ''NamespaceBased''';
+ END IF;
+
+ RAISE NOTICE USING MESSAGE = 'Adding authorization strategy ''NamespaceBased'' for resource claim ''' || claim_name || ''' (claimId=' || claim_id || ').';
+ INSERT INTO dbo.ResourceClaimActionAuthorizationStrategies(ResourceClaimActionId, AuthorizationStrategyId)
+ VALUES (resource_claim_action_id, authorization_strategy_id);
+
+ -- Default Read authorization
+ RAISE NOTICE USING MESSAGE = 'Creating action ''Read'' for resource claim ''' || claim_name || ''' (claimId=' || claim_id || ').';
+
+ INSERT INTO dbo.ResourceClaimActions(ResourceClaimId, ActionId)
+ VALUES (claim_id, Read_action_id)
+ RETURNING ResourceClaimActionId
+ INTO resource_claim_action_id;
+
+
+ authorization_strategy_id := NULL;
+
+ SELECT a.AuthorizationStrategyId INTO authorization_strategy_id
+ FROM dbo.AuthorizationStrategies a
+ WHERE a.AuthorizationStrategyName = 'NamespaceBased';
+
+ IF authorization_strategy_id IS NULL THEN
+ RAISE EXCEPTION USING MESSAGE = 'AuthorizationStrategy does not exist: ''NamespaceBased''';
+ END IF;
+
+ RAISE NOTICE USING MESSAGE = 'Adding authorization strategy ''NamespaceBased'' for resource claim ''' || claim_name || ''' (claimId=' || claim_id || ').';
+ INSERT INTO dbo.ResourceClaimActionAuthorizationStrategies(ResourceClaimActionId, AuthorizationStrategyId)
+ VALUES (resource_claim_action_id, authorization_strategy_id);
+
+ -- Default Update authorization
+ RAISE NOTICE USING MESSAGE = 'Creating action ''Update'' for resource claim ''' || claim_name || ''' (claimId=' || claim_id || ').';
+
+ INSERT INTO dbo.ResourceClaimActions(ResourceClaimId, ActionId)
+ VALUES (claim_id, Update_action_id)
+ RETURNING ResourceClaimActionId
+ INTO resource_claim_action_id;
+
+
+ authorization_strategy_id := NULL;
+
+ SELECT a.AuthorizationStrategyId INTO authorization_strategy_id
+ FROM dbo.AuthorizationStrategies a
+ WHERE a.AuthorizationStrategyName = 'NamespaceBased';
+
+ IF authorization_strategy_id IS NULL THEN
+ RAISE EXCEPTION USING MESSAGE = 'AuthorizationStrategy does not exist: ''NamespaceBased''';
+ END IF;
+
+ RAISE NOTICE USING MESSAGE = 'Adding authorization strategy ''NamespaceBased'' for resource claim ''' || claim_name || ''' (claimId=' || claim_id || ').';
+ INSERT INTO dbo.ResourceClaimActionAuthorizationStrategies(ResourceClaimActionId, AuthorizationStrategyId)
+ VALUES (resource_claim_action_id, authorization_strategy_id);
+
+ -- Default Delete authorization
+ RAISE NOTICE USING MESSAGE = 'Creating action ''Delete'' for resource claim ''' || claim_name || ''' (claimId=' || claim_id || ').';
+
+ INSERT INTO dbo.ResourceClaimActions(ResourceClaimId, ActionId)
+ VALUES (claim_id, Delete_action_id)
+ RETURNING ResourceClaimActionId
+ INTO resource_claim_action_id;
+
+
+ authorization_strategy_id := NULL;
+
+ SELECT a.AuthorizationStrategyId INTO authorization_strategy_id
+ FROM dbo.AuthorizationStrategies a
+ WHERE a.AuthorizationStrategyName = 'NamespaceBased';
+
+ IF authorization_strategy_id IS NULL THEN
+ RAISE EXCEPTION USING MESSAGE = 'AuthorizationStrategy does not exist: ''NamespaceBased''';
+ END IF;
+
+ RAISE NOTICE USING MESSAGE = 'Adding authorization strategy ''NamespaceBased'' for resource claim ''' || claim_name || ''' (claimId=' || claim_id || ').';
+ INSERT INTO dbo.ResourceClaimActionAuthorizationStrategies(ResourceClaimActionId, AuthorizationStrategyId)
+ VALUES (resource_claim_action_id, authorization_strategy_id);
+
+ -- Processing claimsets for http://ed-fi.org/ods/identity/claims/domains/assessmentMetadata
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Claim set: 'SIS Vendor'
+ ----------------------------------------------------------------------------------------------------------------------------
+ claim_set_name := 'SIS Vendor';
+ claim_set_id := NULL;
+
+ SELECT ClaimSetId INTO claim_set_id
+ FROM dbo.ClaimSets
+ WHERE ClaimSetName = claim_set_name;
+
+ IF claim_set_id IS NULL THEN
+ RAISE NOTICE 'Creating new claim set: %', claim_set_name;
+
+ INSERT INTO dbo.ClaimSets(ClaimSetName)
+ VALUES (claim_set_name)
+ RETURNING ClaimSetId
+ INTO claim_set_id;
+ END IF;
+
+
+ RAISE NOTICE USING MESSAGE = 'Deleting existing actions for claim set ''' || claim_set_name || ''' (claimSetId=' || claim_set_id || ') on resource claim ''' || claim_name || '''.';
+
+ DELETE FROM dbo.ClaimSetResourceClaimActionAuthorizationStrategyOverrides
+ WHERE ClaimSetResourceClaimActionId IN (
+ SELECT ClaimSetResourceClaimActionId FROM dbo.ClaimSetResourceClaimActions WHERE ClaimSetId = claim_set_id AND ResourceClaimId = claim_id);
+
+ DELETE FROM dbo.ClaimSetResourceClaimActions
+ WHERE ClaimSetId = claim_set_id AND ResourceClaimId = claim_id;
+
+
+
+ -- Claim set-specific Create authorization
+ RAISE NOTICE USING MESSAGE = 'Creating ''Create'' action for claim set ''' || claim_set_name || ''' (claimSetId=' || claim_set_id || ', actionId = ' || Create_action_id || ').';
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (claim_id, claim_set_id, Create_action_id) -- Create
+ RETURNING ClaimSetResourceClaimActionId
+ INTO claim_set_resource_claim_action_id;
+
+
+
+
+ -- Claim set-specific Read authorization
+ RAISE NOTICE USING MESSAGE = 'Creating ''Read'' action for claim set ''' || claim_set_name || ''' (claimSetId=' || claim_set_id || ', actionId = ' || Read_action_id || ').';
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (claim_id, claim_set_id, Read_action_id) -- Read
+ RETURNING ClaimSetResourceClaimActionId
+ INTO claim_set_resource_claim_action_id;
+
+
+
+
+ -- Claim set-specific Update authorization
+ RAISE NOTICE USING MESSAGE = 'Creating ''Update'' action for claim set ''' || claim_set_name || ''' (claimSetId=' || claim_set_id || ', actionId = ' || Update_action_id || ').';
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (claim_id, claim_set_id, Update_action_id) -- Update
+ RETURNING ClaimSetResourceClaimActionId
+ INTO claim_set_resource_claim_action_id;
+
+
+
+
+ -- Claim set-specific Delete authorization
+ RAISE NOTICE USING MESSAGE = 'Creating ''Delete'' action for claim set ''' || claim_set_name || ''' (claimSetId=' || claim_set_id || ', actionId = ' || Delete_action_id || ').';
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (claim_id, claim_set_id, Delete_action_id) -- Delete
+ RETURNING ClaimSetResourceClaimActionId
+ INTO claim_set_resource_claim_action_id;
+
+
+
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Claim set: 'Ed-Fi Sandbox'
+ ----------------------------------------------------------------------------------------------------------------------------
+ claim_set_name := 'Ed-Fi Sandbox';
+ claim_set_id := NULL;
+
+ SELECT ClaimSetId INTO claim_set_id
+ FROM dbo.ClaimSets
+ WHERE ClaimSetName = claim_set_name;
+
+ IF claim_set_id IS NULL THEN
+ RAISE NOTICE 'Creating new claim set: %', claim_set_name;
+
+ INSERT INTO dbo.ClaimSets(ClaimSetName)
+ VALUES (claim_set_name)
+ RETURNING ClaimSetId
+ INTO claim_set_id;
+ END IF;
+
+
+ RAISE NOTICE USING MESSAGE = 'Deleting existing actions for claim set ''' || claim_set_name || ''' (claimSetId=' || claim_set_id || ') on resource claim ''' || claim_name || '''.';
+
+ DELETE FROM dbo.ClaimSetResourceClaimActionAuthorizationStrategyOverrides
+ WHERE ClaimSetResourceClaimActionId IN (
+ SELECT ClaimSetResourceClaimActionId FROM dbo.ClaimSetResourceClaimActions WHERE ClaimSetId = claim_set_id AND ResourceClaimId = claim_id);
+
+ DELETE FROM dbo.ClaimSetResourceClaimActions
+ WHERE ClaimSetId = claim_set_id AND ResourceClaimId = claim_id;
+
+
+
+ -- Claim set-specific Create authorization
+ RAISE NOTICE USING MESSAGE = 'Creating ''Create'' action for claim set ''' || claim_set_name || ''' (claimSetId=' || claim_set_id || ', actionId = ' || Create_action_id || ').';
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (claim_id, claim_set_id, Create_action_id) -- Create
+ RETURNING ClaimSetResourceClaimActionId
+ INTO claim_set_resource_claim_action_id;
+
+
+
+
+ -- Claim set-specific Read authorization
+ RAISE NOTICE USING MESSAGE = 'Creating ''Read'' action for claim set ''' || claim_set_name || ''' (claimSetId=' || claim_set_id || ', actionId = ' || Read_action_id || ').';
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (claim_id, claim_set_id, Read_action_id) -- Read
+ RETURNING ClaimSetResourceClaimActionId
+ INTO claim_set_resource_claim_action_id;
+
+
+
+
+ -- Claim set-specific Update authorization
+ RAISE NOTICE USING MESSAGE = 'Creating ''Update'' action for claim set ''' || claim_set_name || ''' (claimSetId=' || claim_set_id || ', actionId = ' || Update_action_id || ').';
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (claim_id, claim_set_id, Update_action_id) -- Update
+ RETURNING ClaimSetResourceClaimActionId
+ INTO claim_set_resource_claim_action_id;
+
+
+
+
+ -- Claim set-specific Delete authorization
+ RAISE NOTICE USING MESSAGE = 'Creating ''Delete'' action for claim set ''' || claim_set_name || ''' (claimSetId=' || claim_set_id || ', actionId = ' || Delete_action_id || ').';
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (claim_id, claim_set_id, Delete_action_id) -- Delete
+ RETURNING ClaimSetResourceClaimActionId
+ INTO claim_set_resource_claim_action_id;
+
+
+
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Claim set: 'Assessment Vendor'
+ ----------------------------------------------------------------------------------------------------------------------------
+ claim_set_name := 'Assessment Vendor';
+ claim_set_id := NULL;
+
+ SELECT ClaimSetId INTO claim_set_id
+ FROM dbo.ClaimSets
+ WHERE ClaimSetName = claim_set_name;
+
+ IF claim_set_id IS NULL THEN
+ RAISE NOTICE 'Creating new claim set: %', claim_set_name;
+
+ INSERT INTO dbo.ClaimSets(ClaimSetName)
+ VALUES (claim_set_name)
+ RETURNING ClaimSetId
+ INTO claim_set_id;
+ END IF;
+
+
+ RAISE NOTICE USING MESSAGE = 'Deleting existing actions for claim set ''' || claim_set_name || ''' (claimSetId=' || claim_set_id || ') on resource claim ''' || claim_name || '''.';
+
+ DELETE FROM dbo.ClaimSetResourceClaimActionAuthorizationStrategyOverrides
+ WHERE ClaimSetResourceClaimActionId IN (
+ SELECT ClaimSetResourceClaimActionId FROM dbo.ClaimSetResourceClaimActions WHERE ClaimSetId = claim_set_id AND ResourceClaimId = claim_id);
+
+ DELETE FROM dbo.ClaimSetResourceClaimActions
+ WHERE ClaimSetId = claim_set_id AND ResourceClaimId = claim_id;
+
+
+
+ -- Claim set-specific Create authorization
+ RAISE NOTICE USING MESSAGE = 'Creating ''Create'' action for claim set ''' || claim_set_name || ''' (claimSetId=' || claim_set_id || ', actionId = ' || Create_action_id || ').';
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (claim_id, claim_set_id, Create_action_id) -- Create
+ RETURNING ClaimSetResourceClaimActionId
+ INTO claim_set_resource_claim_action_id;
+
+
+
+
+ -- Claim set-specific Read authorization
+ RAISE NOTICE USING MESSAGE = 'Creating ''Read'' action for claim set ''' || claim_set_name || ''' (claimSetId=' || claim_set_id || ', actionId = ' || Read_action_id || ').';
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (claim_id, claim_set_id, Read_action_id) -- Read
+ RETURNING ClaimSetResourceClaimActionId
+ INTO claim_set_resource_claim_action_id;
+
+
+
+
+ -- Claim set-specific Update authorization
+ RAISE NOTICE USING MESSAGE = 'Creating ''Update'' action for claim set ''' || claim_set_name || ''' (claimSetId=' || claim_set_id || ', actionId = ' || Update_action_id || ').';
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (claim_id, claim_set_id, Update_action_id) -- Update
+ RETURNING ClaimSetResourceClaimActionId
+ INTO claim_set_resource_claim_action_id;
+
+
+
+
+ -- Claim set-specific Delete authorization
+ RAISE NOTICE USING MESSAGE = 'Creating ''Delete'' action for claim set ''' || claim_set_name || ''' (claimSetId=' || claim_set_id || ', actionId = ' || Delete_action_id || ').';
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (claim_id, claim_set_id, Delete_action_id) -- Delete
+ RETURNING ClaimSetResourceClaimActionId
+ INTO claim_set_resource_claim_action_id;
+
+
+
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Claim set: 'District Hosted SIS Vendor'
+ ----------------------------------------------------------------------------------------------------------------------------
+ claim_set_name := 'District Hosted SIS Vendor';
+ claim_set_id := NULL;
+
+ SELECT ClaimSetId INTO claim_set_id
+ FROM dbo.ClaimSets
+ WHERE ClaimSetName = claim_set_name;
+
+ IF claim_set_id IS NULL THEN
+ RAISE NOTICE 'Creating new claim set: %', claim_set_name;
+
+ INSERT INTO dbo.ClaimSets(ClaimSetName)
+ VALUES (claim_set_name)
+ RETURNING ClaimSetId
+ INTO claim_set_id;
+ END IF;
+
+
+ RAISE NOTICE USING MESSAGE = 'Deleting existing actions for claim set ''' || claim_set_name || ''' (claimSetId=' || claim_set_id || ') on resource claim ''' || claim_name || '''.';
+
+ DELETE FROM dbo.ClaimSetResourceClaimActionAuthorizationStrategyOverrides
+ WHERE ClaimSetResourceClaimActionId IN (
+ SELECT ClaimSetResourceClaimActionId FROM dbo.ClaimSetResourceClaimActions WHERE ClaimSetId = claim_set_id AND ResourceClaimId = claim_id);
+
+ DELETE FROM dbo.ClaimSetResourceClaimActions
+ WHERE ClaimSetId = claim_set_id AND ResourceClaimId = claim_id;
+
+
+
+ -- Claim set-specific Create authorization
+ RAISE NOTICE USING MESSAGE = 'Creating ''Create'' action for claim set ''' || claim_set_name || ''' (claimSetId=' || claim_set_id || ', actionId = ' || Create_action_id || ').';
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (claim_id, claim_set_id, Create_action_id) -- Create
+ RETURNING ClaimSetResourceClaimActionId
+ INTO claim_set_resource_claim_action_id;
+
+
+
+
+ -- Claim set-specific Read authorization
+ RAISE NOTICE USING MESSAGE = 'Creating ''Read'' action for claim set ''' || claim_set_name || ''' (claimSetId=' || claim_set_id || ', actionId = ' || Read_action_id || ').';
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (claim_id, claim_set_id, Read_action_id) -- Read
+ RETURNING ClaimSetResourceClaimActionId
+ INTO claim_set_resource_claim_action_id;
+
+
+
+
+ -- Claim set-specific Update authorization
+ RAISE NOTICE USING MESSAGE = 'Creating ''Update'' action for claim set ''' || claim_set_name || ''' (claimSetId=' || claim_set_id || ', actionId = ' || Update_action_id || ').';
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (claim_id, claim_set_id, Update_action_id) -- Update
+ RETURNING ClaimSetResourceClaimActionId
+ INTO claim_set_resource_claim_action_id;
+
+
+
+
+ -- Claim set-specific Delete authorization
+ RAISE NOTICE USING MESSAGE = 'Creating ''Delete'' action for claim set ''' || claim_set_name || ''' (claimSetId=' || claim_set_id || ', actionId = ' || Delete_action_id || ').';
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (claim_id, claim_set_id, Delete_action_id) -- Delete
+ RETURNING ClaimSetResourceClaimActionId
+ INTO claim_set_resource_claim_action_id;
+
+
+
+ -- Push claimId to the stack
+ claim_id_stack := array_append(claim_id_stack, claim_id);
+
+ -- Processing children of http://ed-fi.org/ods/identity/claims/domains/assessmentMetadata
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Resource Claim: 'http://ed-fi.org/ods/identity/claims/assessmentAdministration'
+ ----------------------------------------------------------------------------------------------------------------------------
+ claim_name := 'http://ed-fi.org/ods/identity/claims/assessmentAdministration';
+ claim_id := NULL;
+
+ SELECT ResourceClaimId, ParentResourceClaimId INTO claim_id, existing_parent_resource_claim_id
+ FROM dbo.ResourceClaims
+ WHERE ClaimName = claim_name;
+
+ parent_resource_claim_id := claim_id_stack[array_upper(claim_id_stack, 1)];
+
+ IF claim_id IS NULL THEN
+ RAISE NOTICE 'Creating new claim: %', claim_name;
+
+ INSERT INTO dbo.ResourceClaims(ResourceName, ClaimName, ParentResourceClaimId)
+ VALUES ('assessmentAdministration', 'http://ed-fi.org/ods/identity/claims/assessmentAdministration', parent_resource_claim_id)
+ RETURNING ResourceClaimId
+ INTO claim_id;
+ ELSE
+ IF parent_resource_claim_id != existing_parent_resource_claim_id OR (parent_resource_claim_id IS NULL AND existing_parent_resource_claim_id IS NOT NULL) OR (parent_resource_claim_id IS NOT NULL AND existing_parent_resource_claim_id IS NULL) THEN
+ RAISE NOTICE USING MESSAGE = 'Repointing claim ''' || claim_name || ''' (ResourceClaimId=' || claim_id || ') to new parent (from ResourceClaimId=' || COALESCE(existing_parent_resource_claim_id, 0) || ' to ResourceClaimId=' || COALESCE(parent_resource_claim_id, 0) || ')';
+
+ UPDATE dbo.ResourceClaims
+ SET ParentResourceClaimId = parent_resource_claim_id
+ WHERE ResourceClaimId = claim_id;
+ END IF;
+ END IF;
+
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Resource Claim: 'http://ed-fi.org/ods/identity/claims/assessmentAdministrationAssessmentAdminstrationPeriod'
+ ----------------------------------------------------------------------------------------------------------------------------
+ claim_name := 'http://ed-fi.org/ods/identity/claims/assessmentAdministrationAssessmentAdminstrationPeriod';
+ claim_id := NULL;
+
+ SELECT ResourceClaimId, ParentResourceClaimId INTO claim_id, existing_parent_resource_claim_id
+ FROM dbo.ResourceClaims
+ WHERE ClaimName = claim_name;
+
+ parent_resource_claim_id := claim_id_stack[array_upper(claim_id_stack, 1)];
+
+ IF claim_id IS NULL THEN
+ RAISE NOTICE 'Creating new claim: %', claim_name;
+
+ INSERT INTO dbo.ResourceClaims(ResourceName, ClaimName, ParentResourceClaimId)
+ VALUES ('assessmentAdministrationAssessmentAdminstrationPeriod', 'http://ed-fi.org/ods/identity/claims/assessmentAdministrationAssessmentAdminstrationPeriod', parent_resource_claim_id)
+ RETURNING ResourceClaimId
+ INTO claim_id;
+ ELSE
+ IF parent_resource_claim_id != existing_parent_resource_claim_id OR (parent_resource_claim_id IS NULL AND existing_parent_resource_claim_id IS NOT NULL) OR (parent_resource_claim_id IS NOT NULL AND existing_parent_resource_claim_id IS NULL) THEN
+ RAISE NOTICE USING MESSAGE = 'Repointing claim ''' || claim_name || ''' (ResourceClaimId=' || claim_id || ') to new parent (from ResourceClaimId=' || COALESCE(existing_parent_resource_claim_id, 0) || ' to ResourceClaimId=' || COALESCE(parent_resource_claim_id, 0) || ')';
+
+ UPDATE dbo.ResourceClaims
+ SET ParentResourceClaimId = parent_resource_claim_id
+ WHERE ResourceClaimId = claim_id;
+ END IF;
+ END IF;
+
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Resource Claim: 'http://ed-fi.org/ods/identity/claims/assessmentAdministrationAssessmentBatteryPart'
+ ----------------------------------------------------------------------------------------------------------------------------
+ claim_name := 'http://ed-fi.org/ods/identity/claims/assessmentAdministrationAssessmentBatteryPart';
+ claim_id := NULL;
+
+ SELECT ResourceClaimId, ParentResourceClaimId INTO claim_id, existing_parent_resource_claim_id
+ FROM dbo.ResourceClaims
+ WHERE ClaimName = claim_name;
+
+ parent_resource_claim_id := claim_id_stack[array_upper(claim_id_stack, 1)];
+
+ IF claim_id IS NULL THEN
+ RAISE NOTICE 'Creating new claim: %', claim_name;
+
+ INSERT INTO dbo.ResourceClaims(ResourceName, ClaimName, ParentResourceClaimId)
+ VALUES ('assessmentAdministrationAssessmentBatteryPart', 'http://ed-fi.org/ods/identity/claims/assessmentAdministrationAssessmentBatteryPart', parent_resource_claim_id)
+ RETURNING ResourceClaimId
+ INTO claim_id;
+ ELSE
+ IF parent_resource_claim_id != existing_parent_resource_claim_id OR (parent_resource_claim_id IS NULL AND existing_parent_resource_claim_id IS NOT NULL) OR (parent_resource_claim_id IS NOT NULL AND existing_parent_resource_claim_id IS NULL) THEN
+ RAISE NOTICE USING MESSAGE = 'Repointing claim ''' || claim_name || ''' (ResourceClaimId=' || claim_id || ') to new parent (from ResourceClaimId=' || COALESCE(existing_parent_resource_claim_id, 0) || ' to ResourceClaimId=' || COALESCE(parent_resource_claim_id, 0) || ')';
+
+ UPDATE dbo.ResourceClaims
+ SET ParentResourceClaimId = parent_resource_claim_id
+ WHERE ResourceClaimId = claim_id;
+ END IF;
+ END IF;
+
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Resource Claim: 'http://ed-fi.org/ods/identity/claims/assessmentBatteryPart'
+ ----------------------------------------------------------------------------------------------------------------------------
+ claim_name := 'http://ed-fi.org/ods/identity/claims/assessmentBatteryPart';
+ claim_id := NULL;
+
+ SELECT ResourceClaimId, ParentResourceClaimId INTO claim_id, existing_parent_resource_claim_id
+ FROM dbo.ResourceClaims
+ WHERE ClaimName = claim_name;
+
+ parent_resource_claim_id := claim_id_stack[array_upper(claim_id_stack, 1)];
+
+ IF claim_id IS NULL THEN
+ RAISE NOTICE 'Creating new claim: %', claim_name;
+
+ INSERT INTO dbo.ResourceClaims(ResourceName, ClaimName, ParentResourceClaimId)
+ VALUES ('assessmentBatteryPart', 'http://ed-fi.org/ods/identity/claims/assessmentBatteryPart', parent_resource_claim_id)
+ RETURNING ResourceClaimId
+ INTO claim_id;
+ ELSE
+ IF parent_resource_claim_id != existing_parent_resource_claim_id OR (parent_resource_claim_id IS NULL AND existing_parent_resource_claim_id IS NOT NULL) OR (parent_resource_claim_id IS NOT NULL AND existing_parent_resource_claim_id IS NULL) THEN
+ RAISE NOTICE USING MESSAGE = 'Repointing claim ''' || claim_name || ''' (ResourceClaimId=' || claim_id || ') to new parent (from ResourceClaimId=' || COALESCE(existing_parent_resource_claim_id, 0) || ' to ResourceClaimId=' || COALESCE(parent_resource_claim_id, 0) || ')';
+
+ UPDATE dbo.ResourceClaims
+ SET ParentResourceClaimId = parent_resource_claim_id
+ WHERE ResourceClaimId = claim_id;
+ END IF;
+ END IF;
+
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Resource Claim: 'http://ed-fi.org/ods/identity/claims/assessmentBatteryPartObjectiveAssessment'
+ ----------------------------------------------------------------------------------------------------------------------------
+ claim_name := 'http://ed-fi.org/ods/identity/claims/assessmentBatteryPartObjectiveAssessment';
+ claim_id := NULL;
+
+ SELECT ResourceClaimId, ParentResourceClaimId INTO claim_id, existing_parent_resource_claim_id
+ FROM dbo.ResourceClaims
+ WHERE ClaimName = claim_name;
+
+ parent_resource_claim_id := claim_id_stack[array_upper(claim_id_stack, 1)];
+
+ IF claim_id IS NULL THEN
+ RAISE NOTICE 'Creating new claim: %', claim_name;
+
+ INSERT INTO dbo.ResourceClaims(ResourceName, ClaimName, ParentResourceClaimId)
+ VALUES ('assessmentBatteryPartObjectiveAssessment', 'http://ed-fi.org/ods/identity/claims/assessmentBatteryPartObjectiveAssessment', parent_resource_claim_id)
+ RETURNING ResourceClaimId
+ INTO claim_id;
+ ELSE
+ IF parent_resource_claim_id != existing_parent_resource_claim_id OR (parent_resource_claim_id IS NULL AND existing_parent_resource_claim_id IS NOT NULL) OR (parent_resource_claim_id IS NOT NULL AND existing_parent_resource_claim_id IS NULL) THEN
+ RAISE NOTICE USING MESSAGE = 'Repointing claim ''' || claim_name || ''' (ResourceClaimId=' || claim_id || ') to new parent (from ResourceClaimId=' || COALESCE(existing_parent_resource_claim_id, 0) || ' to ResourceClaimId=' || COALESCE(parent_resource_claim_id, 0) || ')';
+
+ UPDATE dbo.ResourceClaims
+ SET ParentResourceClaimId = parent_resource_claim_id
+ WHERE ResourceClaimId = claim_id;
+ END IF;
+ END IF;
+
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Resource Claim: 'http://ed-fi.org/ods/identity/claims/assesssmentAdministrationParticipation'
+ ----------------------------------------------------------------------------------------------------------------------------
+ claim_name := 'http://ed-fi.org/ods/identity/claims/assesssmentAdministrationParticipation';
+ claim_id := NULL;
+
+ SELECT ResourceClaimId, ParentResourceClaimId INTO claim_id, existing_parent_resource_claim_id
+ FROM dbo.ResourceClaims
+ WHERE ClaimName = claim_name;
+
+ parent_resource_claim_id := claim_id_stack[array_upper(claim_id_stack, 1)];
+
+ IF claim_id IS NULL THEN
+ RAISE NOTICE 'Creating new claim: %', claim_name;
+
+ INSERT INTO dbo.ResourceClaims(ResourceName, ClaimName, ParentResourceClaimId)
+ VALUES ('assesssmentAdministrationParticipation', 'http://ed-fi.org/ods/identity/claims/assesssmentAdministrationParticipation', parent_resource_claim_id)
+ RETURNING ResourceClaimId
+ INTO claim_id;
+ ELSE
+ IF parent_resource_claim_id != existing_parent_resource_claim_id OR (parent_resource_claim_id IS NULL AND existing_parent_resource_claim_id IS NOT NULL) OR (parent_resource_claim_id IS NOT NULL AND existing_parent_resource_claim_id IS NULL) THEN
+ RAISE NOTICE USING MESSAGE = 'Repointing claim ''' || claim_name || ''' (ResourceClaimId=' || claim_id || ') to new parent (from ResourceClaimId=' || COALESCE(existing_parent_resource_claim_id, 0) || ' to ResourceClaimId=' || COALESCE(parent_resource_claim_id, 0) || ')';
+
+ UPDATE dbo.ResourceClaims
+ SET ParentResourceClaimId = parent_resource_claim_id
+ WHERE ResourceClaimId = claim_id;
+ END IF;
+ END IF;
+
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Resource Claim: 'http://ed-fi.org/ods/identity/claims/assesssmentAdministrationParticipationAdministrationPointOfContact'
+ ----------------------------------------------------------------------------------------------------------------------------
+ claim_name := 'http://ed-fi.org/ods/identity/claims/assesssmentAdministrationParticipationAdministrationPointOfContact';
+ claim_id := NULL;
+
+ SELECT ResourceClaimId, ParentResourceClaimId INTO claim_id, existing_parent_resource_claim_id
+ FROM dbo.ResourceClaims
+ WHERE ClaimName = claim_name;
+
+ parent_resource_claim_id := claim_id_stack[array_upper(claim_id_stack, 1)];
+
+ IF claim_id IS NULL THEN
+ RAISE NOTICE 'Creating new claim: %', claim_name;
+
+ INSERT INTO dbo.ResourceClaims(ResourceName, ClaimName, ParentResourceClaimId)
+ VALUES ('assesssmentAdministrationParticipationAdministrationPointOfContact', 'http://ed-fi.org/ods/identity/claims/assesssmentAdministrationParticipationAdministrationPointOfContact', parent_resource_claim_id)
+ RETURNING ResourceClaimId
+ INTO claim_id;
+ ELSE
+ IF parent_resource_claim_id != existing_parent_resource_claim_id OR (parent_resource_claim_id IS NULL AND existing_parent_resource_claim_id IS NOT NULL) OR (parent_resource_claim_id IS NOT NULL AND existing_parent_resource_claim_id IS NULL) THEN
+ RAISE NOTICE USING MESSAGE = 'Repointing claim ''' || claim_name || ''' (ResourceClaimId=' || claim_id || ') to new parent (from ResourceClaimId=' || COALESCE(existing_parent_resource_claim_id, 0) || ' to ResourceClaimId=' || COALESCE(parent_resource_claim_id, 0) || ')';
+
+ UPDATE dbo.ResourceClaims
+ SET ParentResourceClaimId = parent_resource_claim_id
+ WHERE ResourceClaimId = claim_id;
+ END IF;
+ END IF;
+
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Resource Claim: 'http://ed-fi.org/ods/identity/claims/studentAssessmentRegistration'
+ ----------------------------------------------------------------------------------------------------------------------------
+ claim_name := 'http://ed-fi.org/ods/identity/claims/studentAssessmentRegistration';
+ claim_id := NULL;
+
+ SELECT ResourceClaimId, ParentResourceClaimId INTO claim_id, existing_parent_resource_claim_id
+ FROM dbo.ResourceClaims
+ WHERE ClaimName = claim_name;
+
+ parent_resource_claim_id := claim_id_stack[array_upper(claim_id_stack, 1)];
+
+ IF claim_id IS NULL THEN
+ RAISE NOTICE 'Creating new claim: %', claim_name;
+
+ INSERT INTO dbo.ResourceClaims(ResourceName, ClaimName, ParentResourceClaimId)
+ VALUES ('studentAssessmentRegistration', 'http://ed-fi.org/ods/identity/claims/studentAssessmentRegistration', parent_resource_claim_id)
+ RETURNING ResourceClaimId
+ INTO claim_id;
+ ELSE
+ IF parent_resource_claim_id != existing_parent_resource_claim_id OR (parent_resource_claim_id IS NULL AND existing_parent_resource_claim_id IS NOT NULL) OR (parent_resource_claim_id IS NOT NULL AND existing_parent_resource_claim_id IS NULL) THEN
+ RAISE NOTICE USING MESSAGE = 'Repointing claim ''' || claim_name || ''' (ResourceClaimId=' || claim_id || ') to new parent (from ResourceClaimId=' || COALESCE(existing_parent_resource_claim_id, 0) || ' to ResourceClaimId=' || COALESCE(parent_resource_claim_id, 0) || ')';
+
+ UPDATE dbo.ResourceClaims
+ SET ParentResourceClaimId = parent_resource_claim_id
+ WHERE ResourceClaimId = claim_id;
+ END IF;
+ END IF;
+
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Resource Claim: 'http://ed-fi.org/ods/identity/claims/studentAssessmentRegistrationAssessmentAccommodation'
+ ----------------------------------------------------------------------------------------------------------------------------
+ claim_name := 'http://ed-fi.org/ods/identity/claims/studentAssessmentRegistrationAssessmentAccommodation';
+ claim_id := NULL;
+
+ SELECT ResourceClaimId, ParentResourceClaimId INTO claim_id, existing_parent_resource_claim_id
+ FROM dbo.ResourceClaims
+ WHERE ClaimName = claim_name;
+
+ parent_resource_claim_id := claim_id_stack[array_upper(claim_id_stack, 1)];
+
+ IF claim_id IS NULL THEN
+ RAISE NOTICE 'Creating new claim: %', claim_name;
+
+ INSERT INTO dbo.ResourceClaims(ResourceName, ClaimName, ParentResourceClaimId)
+ VALUES ('studentAssessmentRegistrationAssessmentAccommodation', 'http://ed-fi.org/ods/identity/claims/studentAssessmentRegistrationAssessmentAccommodation', parent_resource_claim_id)
+ RETURNING ResourceClaimId
+ INTO claim_id;
+ ELSE
+ IF parent_resource_claim_id != existing_parent_resource_claim_id OR (parent_resource_claim_id IS NULL AND existing_parent_resource_claim_id IS NOT NULL) OR (parent_resource_claim_id IS NOT NULL AND existing_parent_resource_claim_id IS NULL) THEN
+ RAISE NOTICE USING MESSAGE = 'Repointing claim ''' || claim_name || ''' (ResourceClaimId=' || claim_id || ') to new parent (from ResourceClaimId=' || COALESCE(existing_parent_resource_claim_id, 0) || ' to ResourceClaimId=' || COALESCE(parent_resource_claim_id, 0) || ')';
+
+ UPDATE dbo.ResourceClaims
+ SET ParentResourceClaimId = parent_resource_claim_id
+ WHERE ResourceClaimId = claim_id;
+ END IF;
+ END IF;
+
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Resource Claim: 'http://ed-fi.org/ods/identity/claims/studentAssessmentRegistrationAssessmentCustomization'
+ ----------------------------------------------------------------------------------------------------------------------------
+ claim_name := 'http://ed-fi.org/ods/identity/claims/studentAssessmentRegistrationAssessmentCustomization';
+ claim_id := NULL;
+
+ SELECT ResourceClaimId, ParentResourceClaimId INTO claim_id, existing_parent_resource_claim_id
+ FROM dbo.ResourceClaims
+ WHERE ClaimName = claim_name;
+
+ parent_resource_claim_id := claim_id_stack[array_upper(claim_id_stack, 1)];
+
+ IF claim_id IS NULL THEN
+ RAISE NOTICE 'Creating new claim: %', claim_name;
+
+ INSERT INTO dbo.ResourceClaims(ResourceName, ClaimName, ParentResourceClaimId)
+ VALUES ('studentAssessmentRegistrationAssessmentCustomization', 'http://ed-fi.org/ods/identity/claims/studentAssessmentRegistrationAssessmentCustomization', parent_resource_claim_id)
+ RETURNING ResourceClaimId
+ INTO claim_id;
+ ELSE
+ IF parent_resource_claim_id != existing_parent_resource_claim_id OR (parent_resource_claim_id IS NULL AND existing_parent_resource_claim_id IS NOT NULL) OR (parent_resource_claim_id IS NOT NULL AND existing_parent_resource_claim_id IS NULL) THEN
+ RAISE NOTICE USING MESSAGE = 'Repointing claim ''' || claim_name || ''' (ResourceClaimId=' || claim_id || ') to new parent (from ResourceClaimId=' || COALESCE(existing_parent_resource_claim_id, 0) || ' to ResourceClaimId=' || COALESCE(parent_resource_claim_id, 0) || ')';
+
+ UPDATE dbo.ResourceClaims
+ SET ParentResourceClaimId = parent_resource_claim_id
+ WHERE ResourceClaimId = claim_id;
+ END IF;
+ END IF;
+
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Resource Claim: 'http://ed-fi.org/ods/identity/claims/studentAssessmentRegistrationBatteryPartAssociation'
+ ----------------------------------------------------------------------------------------------------------------------------
+ claim_name := 'http://ed-fi.org/ods/identity/claims/studentAssessmentRegistrationBatteryPartAssociation';
+ claim_id := NULL;
+
+ SELECT ResourceClaimId, ParentResourceClaimId INTO claim_id, existing_parent_resource_claim_id
+ FROM dbo.ResourceClaims
+ WHERE ClaimName = claim_name;
+
+ parent_resource_claim_id := claim_id_stack[array_upper(claim_id_stack, 1)];
+
+ IF claim_id IS NULL THEN
+ RAISE NOTICE 'Creating new claim: %', claim_name;
+
+ INSERT INTO dbo.ResourceClaims(ResourceName, ClaimName, ParentResourceClaimId)
+ VALUES ('studentAssessmentRegistrationBatteryPartAssociation', 'http://ed-fi.org/ods/identity/claims/studentAssessmentRegistrationBatteryPartAssociation', parent_resource_claim_id)
+ RETURNING ResourceClaimId
+ INTO claim_id;
+ ELSE
+ IF parent_resource_claim_id != existing_parent_resource_claim_id OR (parent_resource_claim_id IS NULL AND existing_parent_resource_claim_id IS NOT NULL) OR (parent_resource_claim_id IS NOT NULL AND existing_parent_resource_claim_id IS NULL) THEN
+ RAISE NOTICE USING MESSAGE = 'Repointing claim ''' || claim_name || ''' (ResourceClaimId=' || claim_id || ') to new parent (from ResourceClaimId=' || COALESCE(existing_parent_resource_claim_id, 0) || ' to ResourceClaimId=' || COALESCE(parent_resource_claim_id, 0) || ')';
+
+ UPDATE dbo.ResourceClaims
+ SET ParentResourceClaimId = parent_resource_claim_id
+ WHERE ResourceClaimId = claim_id;
+ END IF;
+ END IF;
+
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Resource Claim: 'http://ed-fi.org/ods/identity/claims/studentAssessmentRegistrationBatteryPartAssociationAccommodation'
+ ----------------------------------------------------------------------------------------------------------------------------
+ claim_name := 'http://ed-fi.org/ods/identity/claims/studentAssessmentRegistrationBatteryPartAssociationAccommodation';
+ claim_id := NULL;
+
+ SELECT ResourceClaimId, ParentResourceClaimId INTO claim_id, existing_parent_resource_claim_id
+ FROM dbo.ResourceClaims
+ WHERE ClaimName = claim_name;
+
+ parent_resource_claim_id := claim_id_stack[array_upper(claim_id_stack, 1)];
+
+ IF claim_id IS NULL THEN
+ RAISE NOTICE 'Creating new claim: %', claim_name;
+
+ INSERT INTO dbo.ResourceClaims(ResourceName, ClaimName, ParentResourceClaimId)
+ VALUES ('studentAssessmentRegistrationBatteryPartAssociationAccommodation', 'http://ed-fi.org/ods/identity/claims/studentAssessmentRegistrationBatteryPartAssociationAccommodation', parent_resource_claim_id)
+ RETURNING ResourceClaimId
+ INTO claim_id;
+ ELSE
+ IF parent_resource_claim_id != existing_parent_resource_claim_id OR (parent_resource_claim_id IS NULL AND existing_parent_resource_claim_id IS NOT NULL) OR (parent_resource_claim_id IS NOT NULL AND existing_parent_resource_claim_id IS NULL) THEN
+ RAISE NOTICE USING MESSAGE = 'Repointing claim ''' || claim_name || ''' (ResourceClaimId=' || claim_id || ') to new parent (from ResourceClaimId=' || COALESCE(existing_parent_resource_claim_id, 0) || ' to ResourceClaimId=' || COALESCE(parent_resource_claim_id, 0) || ')';
+
+ UPDATE dbo.ResourceClaims
+ SET ParentResourceClaimId = parent_resource_claim_id
+ WHERE ResourceClaimId = claim_id;
+ END IF;
+ END IF;
+
+
+ -- Pop the stack
+ claim_id_stack := (select claim_id_stack[1:array_upper(claim_id_stack, 1) - 1]);
+
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Resource Claim: 'http://ed-fi.org/ods/identity/claims/domains/systemDescriptors'
+ ----------------------------------------------------------------------------------------------------------------------------
+ claim_name := 'http://ed-fi.org/ods/identity/claims/domains/systemDescriptors';
+ claim_id := NULL;
+
+ SELECT ResourceClaimId, ParentResourceClaimId INTO claim_id, existing_parent_resource_claim_id
+ FROM dbo.ResourceClaims
+ WHERE ClaimName = claim_name;
+
+ parent_resource_claim_id := claim_id_stack[array_upper(claim_id_stack, 1)];
+
+ IF claim_id IS NULL THEN
+ RAISE NOTICE 'Creating new claim: %', claim_name;
+
+ INSERT INTO dbo.ResourceClaims(ResourceName, ClaimName, ParentResourceClaimId)
+ VALUES ('systemDescriptors', 'http://ed-fi.org/ods/identity/claims/domains/systemDescriptors', parent_resource_claim_id)
+ RETURNING ResourceClaimId
+ INTO claim_id;
+ ELSE
+ IF parent_resource_claim_id != existing_parent_resource_claim_id OR (parent_resource_claim_id IS NULL AND existing_parent_resource_claim_id IS NOT NULL) OR (parent_resource_claim_id IS NOT NULL AND existing_parent_resource_claim_id IS NULL) THEN
+ RAISE NOTICE USING MESSAGE = 'Repointing claim ''' || claim_name || ''' (ResourceClaimId=' || claim_id || ') to new parent (from ResourceClaimId=' || COALESCE(existing_parent_resource_claim_id, 0) || ' to ResourceClaimId=' || COALESCE(parent_resource_claim_id, 0) || ')';
+
+ UPDATE dbo.ResourceClaims
+ SET ParentResourceClaimId = parent_resource_claim_id
+ WHERE ResourceClaimId = claim_id;
+ END IF;
+ END IF;
+
+ -- Setting default authorization metadata
+ RAISE NOTICE USING MESSAGE = 'Deleting default action authorizations for resource claim ''' || claim_name || ''' (claimId=' || claim_id || ').';
+
+ DELETE FROM dbo.ResourceClaimActionAuthorizationStrategies
+ WHERE ResourceClaimActionId IN (SELECT ResourceClaimActionId FROM dbo.ResourceClaimActions WHERE ResourceClaimId = claim_id);
+
+ DELETE FROM dbo.ResourceClaimActions
+ WHERE ResourceClaimId = claim_id;
+
+
+ -- Default Create authorization
+ RAISE NOTICE USING MESSAGE = 'Creating action ''Create'' for resource claim ''' || claim_name || ''' (claimId=' || claim_id || ').';
+
+ INSERT INTO dbo.ResourceClaimActions(ResourceClaimId, ActionId)
+ VALUES (claim_id, Create_action_id)
+ RETURNING ResourceClaimActionId
+ INTO resource_claim_action_id;
+
+
+ authorization_strategy_id := NULL;
+
+ SELECT a.AuthorizationStrategyId INTO authorization_strategy_id
+ FROM dbo.AuthorizationStrategies a
+ WHERE a.AuthorizationStrategyName = 'NamespaceBased';
+
+ IF authorization_strategy_id IS NULL THEN
+ RAISE EXCEPTION USING MESSAGE = 'AuthorizationStrategy does not exist: ''NamespaceBased''';
+ END IF;
+
+ RAISE NOTICE USING MESSAGE = 'Adding authorization strategy ''NamespaceBased'' for resource claim ''' || claim_name || ''' (claimId=' || claim_id || ').';
+ INSERT INTO dbo.ResourceClaimActionAuthorizationStrategies(ResourceClaimActionId, AuthorizationStrategyId)
+ VALUES (resource_claim_action_id, authorization_strategy_id);
+
+ -- Default Read authorization
+ RAISE NOTICE USING MESSAGE = 'Creating action ''Read'' for resource claim ''' || claim_name || ''' (claimId=' || claim_id || ').';
+
+ INSERT INTO dbo.ResourceClaimActions(ResourceClaimId, ActionId)
+ VALUES (claim_id, Read_action_id)
+ RETURNING ResourceClaimActionId
+ INTO resource_claim_action_id;
+
+
+ authorization_strategy_id := NULL;
+
+ SELECT a.AuthorizationStrategyId INTO authorization_strategy_id
+ FROM dbo.AuthorizationStrategies a
+ WHERE a.AuthorizationStrategyName = 'NoFurtherAuthorizationRequired';
+
+ IF authorization_strategy_id IS NULL THEN
+ RAISE EXCEPTION USING MESSAGE = 'AuthorizationStrategy does not exist: ''NoFurtherAuthorizationRequired''';
+ END IF;
+
+ RAISE NOTICE USING MESSAGE = 'Adding authorization strategy ''NoFurtherAuthorizationRequired'' for resource claim ''' || claim_name || ''' (claimId=' || claim_id || ').';
+ INSERT INTO dbo.ResourceClaimActionAuthorizationStrategies(ResourceClaimActionId, AuthorizationStrategyId)
+ VALUES (resource_claim_action_id, authorization_strategy_id);
+
+ -- Default Update authorization
+ RAISE NOTICE USING MESSAGE = 'Creating action ''Update'' for resource claim ''' || claim_name || ''' (claimId=' || claim_id || ').';
+
+ INSERT INTO dbo.ResourceClaimActions(ResourceClaimId, ActionId)
+ VALUES (claim_id, Update_action_id)
+ RETURNING ResourceClaimActionId
+ INTO resource_claim_action_id;
+
+
+ authorization_strategy_id := NULL;
+
+ SELECT a.AuthorizationStrategyId INTO authorization_strategy_id
+ FROM dbo.AuthorizationStrategies a
+ WHERE a.AuthorizationStrategyName = 'NamespaceBased';
+
+ IF authorization_strategy_id IS NULL THEN
+ RAISE EXCEPTION USING MESSAGE = 'AuthorizationStrategy does not exist: ''NamespaceBased''';
+ END IF;
+
+ RAISE NOTICE USING MESSAGE = 'Adding authorization strategy ''NamespaceBased'' for resource claim ''' || claim_name || ''' (claimId=' || claim_id || ').';
+ INSERT INTO dbo.ResourceClaimActionAuthorizationStrategies(ResourceClaimActionId, AuthorizationStrategyId)
+ VALUES (resource_claim_action_id, authorization_strategy_id);
+
+ -- Default Delete authorization
+ RAISE NOTICE USING MESSAGE = 'Creating action ''Delete'' for resource claim ''' || claim_name || ''' (claimId=' || claim_id || ').';
+
+ INSERT INTO dbo.ResourceClaimActions(ResourceClaimId, ActionId)
+ VALUES (claim_id, Delete_action_id)
+ RETURNING ResourceClaimActionId
+ INTO resource_claim_action_id;
+
+
+ authorization_strategy_id := NULL;
+
+ SELECT a.AuthorizationStrategyId INTO authorization_strategy_id
+ FROM dbo.AuthorizationStrategies a
+ WHERE a.AuthorizationStrategyName = 'NamespaceBased';
+
+ IF authorization_strategy_id IS NULL THEN
+ RAISE EXCEPTION USING MESSAGE = 'AuthorizationStrategy does not exist: ''NamespaceBased''';
+ END IF;
+
+ RAISE NOTICE USING MESSAGE = 'Adding authorization strategy ''NamespaceBased'' for resource claim ''' || claim_name || ''' (claimId=' || claim_id || ').';
+ INSERT INTO dbo.ResourceClaimActionAuthorizationStrategies(ResourceClaimActionId, AuthorizationStrategyId)
+ VALUES (resource_claim_action_id, authorization_strategy_id);
+
+ -- Processing claimsets for http://ed-fi.org/ods/identity/claims/domains/systemDescriptors
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Claim set: 'SIS Vendor'
+ ----------------------------------------------------------------------------------------------------------------------------
+ claim_set_name := 'SIS Vendor';
+ claim_set_id := NULL;
+
+ SELECT ClaimSetId INTO claim_set_id
+ FROM dbo.ClaimSets
+ WHERE ClaimSetName = claim_set_name;
+
+ IF claim_set_id IS NULL THEN
+ RAISE NOTICE 'Creating new claim set: %', claim_set_name;
+
+ INSERT INTO dbo.ClaimSets(ClaimSetName)
+ VALUES (claim_set_name)
+ RETURNING ClaimSetId
+ INTO claim_set_id;
+ END IF;
+
+
+ RAISE NOTICE USING MESSAGE = 'Deleting existing actions for claim set ''' || claim_set_name || ''' (claimSetId=' || claim_set_id || ') on resource claim ''' || claim_name || '''.';
+
+ DELETE FROM dbo.ClaimSetResourceClaimActionAuthorizationStrategyOverrides
+ WHERE ClaimSetResourceClaimActionId IN (
+ SELECT ClaimSetResourceClaimActionId FROM dbo.ClaimSetResourceClaimActions WHERE ClaimSetId = claim_set_id AND ResourceClaimId = claim_id);
+
+ DELETE FROM dbo.ClaimSetResourceClaimActions
+ WHERE ClaimSetId = claim_set_id AND ResourceClaimId = claim_id;
+
+
+
+ -- Claim set-specific Read authorization
+ RAISE NOTICE USING MESSAGE = 'Creating ''Read'' action for claim set ''' || claim_set_name || ''' (claimSetId=' || claim_set_id || ', actionId = ' || Read_action_id || ').';
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (claim_id, claim_set_id, Read_action_id) -- Read
+ RETURNING ClaimSetResourceClaimActionId
+ INTO claim_set_resource_claim_action_id;
+
+
+
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Claim set: 'Ed-Fi Sandbox'
+ ----------------------------------------------------------------------------------------------------------------------------
+ claim_set_name := 'Ed-Fi Sandbox';
+ claim_set_id := NULL;
+
+ SELECT ClaimSetId INTO claim_set_id
+ FROM dbo.ClaimSets
+ WHERE ClaimSetName = claim_set_name;
+
+ IF claim_set_id IS NULL THEN
+ RAISE NOTICE 'Creating new claim set: %', claim_set_name;
+
+ INSERT INTO dbo.ClaimSets(ClaimSetName)
+ VALUES (claim_set_name)
+ RETURNING ClaimSetId
+ INTO claim_set_id;
+ END IF;
+
+
+ RAISE NOTICE USING MESSAGE = 'Deleting existing actions for claim set ''' || claim_set_name || ''' (claimSetId=' || claim_set_id || ') on resource claim ''' || claim_name || '''.';
+
+ DELETE FROM dbo.ClaimSetResourceClaimActionAuthorizationStrategyOverrides
+ WHERE ClaimSetResourceClaimActionId IN (
+ SELECT ClaimSetResourceClaimActionId FROM dbo.ClaimSetResourceClaimActions WHERE ClaimSetId = claim_set_id AND ResourceClaimId = claim_id);
+
+ DELETE FROM dbo.ClaimSetResourceClaimActions
+ WHERE ClaimSetId = claim_set_id AND ResourceClaimId = claim_id;
+
+
+
+ -- Claim set-specific Create authorization
+ RAISE NOTICE USING MESSAGE = 'Creating ''Create'' action for claim set ''' || claim_set_name || ''' (claimSetId=' || claim_set_id || ', actionId = ' || Create_action_id || ').';
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (claim_id, claim_set_id, Create_action_id) -- Create
+ RETURNING ClaimSetResourceClaimActionId
+ INTO claim_set_resource_claim_action_id;
+
+
+
+
+ -- Claim set-specific Read authorization
+ RAISE NOTICE USING MESSAGE = 'Creating ''Read'' action for claim set ''' || claim_set_name || ''' (claimSetId=' || claim_set_id || ', actionId = ' || Read_action_id || ').';
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (claim_id, claim_set_id, Read_action_id) -- Read
+ RETURNING ClaimSetResourceClaimActionId
+ INTO claim_set_resource_claim_action_id;
+
+
+
+
+ -- Claim set-specific Update authorization
+ RAISE NOTICE USING MESSAGE = 'Creating ''Update'' action for claim set ''' || claim_set_name || ''' (claimSetId=' || claim_set_id || ', actionId = ' || Update_action_id || ').';
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (claim_id, claim_set_id, Update_action_id) -- Update
+ RETURNING ClaimSetResourceClaimActionId
+ INTO claim_set_resource_claim_action_id;
+
+
+
+
+ -- Claim set-specific Delete authorization
+ RAISE NOTICE USING MESSAGE = 'Creating ''Delete'' action for claim set ''' || claim_set_name || ''' (claimSetId=' || claim_set_id || ', actionId = ' || Delete_action_id || ').';
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (claim_id, claim_set_id, Delete_action_id) -- Delete
+ RETURNING ClaimSetResourceClaimActionId
+ INTO claim_set_resource_claim_action_id;
+
+
+
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Claim set: 'Assessment Vendor'
+ ----------------------------------------------------------------------------------------------------------------------------
+ claim_set_name := 'Assessment Vendor';
+ claim_set_id := NULL;
+
+ SELECT ClaimSetId INTO claim_set_id
+ FROM dbo.ClaimSets
+ WHERE ClaimSetName = claim_set_name;
+
+ IF claim_set_id IS NULL THEN
+ RAISE NOTICE 'Creating new claim set: %', claim_set_name;
+
+ INSERT INTO dbo.ClaimSets(ClaimSetName)
+ VALUES (claim_set_name)
+ RETURNING ClaimSetId
+ INTO claim_set_id;
+ END IF;
+
+
+ RAISE NOTICE USING MESSAGE = 'Deleting existing actions for claim set ''' || claim_set_name || ''' (claimSetId=' || claim_set_id || ') on resource claim ''' || claim_name || '''.';
+
+ DELETE FROM dbo.ClaimSetResourceClaimActionAuthorizationStrategyOverrides
+ WHERE ClaimSetResourceClaimActionId IN (
+ SELECT ClaimSetResourceClaimActionId FROM dbo.ClaimSetResourceClaimActions WHERE ClaimSetId = claim_set_id AND ResourceClaimId = claim_id);
+
+ DELETE FROM dbo.ClaimSetResourceClaimActions
+ WHERE ClaimSetId = claim_set_id AND ResourceClaimId = claim_id;
+
+
+
+ -- Claim set-specific Read authorization
+ RAISE NOTICE USING MESSAGE = 'Creating ''Read'' action for claim set ''' || claim_set_name || ''' (claimSetId=' || claim_set_id || ', actionId = ' || Read_action_id || ').';
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (claim_id, claim_set_id, Read_action_id) -- Read
+ RETURNING ClaimSetResourceClaimActionId
+ INTO claim_set_resource_claim_action_id;
+
+
+
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Claim set: 'Bootstrap Descriptors and EdOrgs'
+ ----------------------------------------------------------------------------------------------------------------------------
+ claim_set_name := 'Bootstrap Descriptors and EdOrgs';
+ claim_set_id := NULL;
+
+ SELECT ClaimSetId INTO claim_set_id
+ FROM dbo.ClaimSets
+ WHERE ClaimSetName = claim_set_name;
+
+ IF claim_set_id IS NULL THEN
+ RAISE NOTICE 'Creating new claim set: %', claim_set_name;
+
+ INSERT INTO dbo.ClaimSets(ClaimSetName)
+ VALUES (claim_set_name)
+ RETURNING ClaimSetId
+ INTO claim_set_id;
+ END IF;
+
+
+ RAISE NOTICE USING MESSAGE = 'Deleting existing actions for claim set ''' || claim_set_name || ''' (claimSetId=' || claim_set_id || ') on resource claim ''' || claim_name || '''.';
+
+ DELETE FROM dbo.ClaimSetResourceClaimActionAuthorizationStrategyOverrides
+ WHERE ClaimSetResourceClaimActionId IN (
+ SELECT ClaimSetResourceClaimActionId FROM dbo.ClaimSetResourceClaimActions WHERE ClaimSetId = claim_set_id AND ResourceClaimId = claim_id);
+
+ DELETE FROM dbo.ClaimSetResourceClaimActions
+ WHERE ClaimSetId = claim_set_id AND ResourceClaimId = claim_id;
+
+
+
+ -- Claim set-specific Create authorization
+ RAISE NOTICE USING MESSAGE = 'Creating ''Create'' action for claim set ''' || claim_set_name || ''' (claimSetId=' || claim_set_id || ', actionId = ' || Create_action_id || ').';
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (claim_id, claim_set_id, Create_action_id) -- Create
+ RETURNING ClaimSetResourceClaimActionId
+ INTO claim_set_resource_claim_action_id;
+
+
+
+ authorization_strategy_id := NULL;
+
+ SELECT a.AuthorizationStrategyId INTO authorization_strategy_id
+ FROM dbo.AuthorizationStrategies a
+ WHERE a.AuthorizationStrategyName = 'NoFurtherAuthorizationRequired';
+
+ IF authorization_strategy_id IS NULL THEN
+ RAISE EXCEPTION USING MESSAGE = 'AuthorizationStrategy does not exist: ''NoFurtherAuthorizationRequired''';
+ END IF;
+
+ RAISE NOTICE USING MESSAGE = 'Creating authorization strategy override entry of ''NoFurtherAuthorizationRequired''' || '(authorizationStrategyId = ' || authorization_strategy_id || ' for ''Create'' action for claim set ''' || claim_set_name || ''' (claimSetId=' || claim_set_id || ', actionId = ' || Create_action_id || ').';
+
+ INSERT INTO dbo.ClaimSetResourceClaimActionAuthorizationStrategyOverrides(ClaimSetResourceClaimActionId, AuthorizationStrategyId)
+ VALUES (claim_set_resource_claim_action_id, authorization_strategy_id);
+
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Claim set: 'District Hosted SIS Vendor'
+ ----------------------------------------------------------------------------------------------------------------------------
+ claim_set_name := 'District Hosted SIS Vendor';
+ claim_set_id := NULL;
+
+ SELECT ClaimSetId INTO claim_set_id
+ FROM dbo.ClaimSets
+ WHERE ClaimSetName = claim_set_name;
+
+ IF claim_set_id IS NULL THEN
+ RAISE NOTICE 'Creating new claim set: %', claim_set_name;
+
+ INSERT INTO dbo.ClaimSets(ClaimSetName)
+ VALUES (claim_set_name)
+ RETURNING ClaimSetId
+ INTO claim_set_id;
+ END IF;
+
+
+ RAISE NOTICE USING MESSAGE = 'Deleting existing actions for claim set ''' || claim_set_name || ''' (claimSetId=' || claim_set_id || ') on resource claim ''' || claim_name || '''.';
+
+ DELETE FROM dbo.ClaimSetResourceClaimActionAuthorizationStrategyOverrides
+ WHERE ClaimSetResourceClaimActionId IN (
+ SELECT ClaimSetResourceClaimActionId FROM dbo.ClaimSetResourceClaimActions WHERE ClaimSetId = claim_set_id AND ResourceClaimId = claim_id);
+
+ DELETE FROM dbo.ClaimSetResourceClaimActions
+ WHERE ClaimSetId = claim_set_id AND ResourceClaimId = claim_id;
+
+
+
+ -- Claim set-specific Read authorization
+ RAISE NOTICE USING MESSAGE = 'Creating ''Read'' action for claim set ''' || claim_set_name || ''' (claimSetId=' || claim_set_id || ', actionId = ' || Read_action_id || ').';
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (claim_id, claim_set_id, Read_action_id) -- Read
+ RETURNING ClaimSetResourceClaimActionId
+ INTO claim_set_resource_claim_action_id;
+
+
+
+ -- Push claimId to the stack
+ claim_id_stack := array_append(claim_id_stack, claim_id);
+
+ -- Processing children of http://ed-fi.org/ods/identity/claims/domains/systemDescriptors
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Resource Claim: 'http://ed-fi.org/ods/identity/claims/Section504DisabilityTypeDescriptor'
+ ----------------------------------------------------------------------------------------------------------------------------
+ claim_name := 'http://ed-fi.org/ods/identity/claims/Section504DisabilityTypeDescriptor';
+ claim_id := NULL;
+
+ SELECT ResourceClaimId, ParentResourceClaimId INTO claim_id, existing_parent_resource_claim_id
+ FROM dbo.ResourceClaims
+ WHERE ClaimName = claim_name;
+
+ parent_resource_claim_id := claim_id_stack[array_upper(claim_id_stack, 1)];
+
+ IF claim_id IS NULL THEN
+ RAISE NOTICE 'Creating new claim: %', claim_name;
+
+ INSERT INTO dbo.ResourceClaims(ResourceName, ClaimName, ParentResourceClaimId)
+ VALUES ('Section504DisabilityTypeDescriptor', 'http://ed-fi.org/ods/identity/claims/Section504DisabilityTypeDescriptor', parent_resource_claim_id)
+ RETURNING ResourceClaimId
+ INTO claim_id;
+ ELSE
+ IF parent_resource_claim_id != existing_parent_resource_claim_id OR (parent_resource_claim_id IS NULL AND existing_parent_resource_claim_id IS NOT NULL) OR (parent_resource_claim_id IS NOT NULL AND existing_parent_resource_claim_id IS NULL) THEN
+ RAISE NOTICE USING MESSAGE = 'Repointing claim ''' || claim_name || ''' (ResourceClaimId=' || claim_id || ') to new parent (from ResourceClaimId=' || COALESCE(existing_parent_resource_claim_id, 0) || ' to ResourceClaimId=' || COALESCE(parent_resource_claim_id, 0) || ')';
+
+ UPDATE dbo.ResourceClaims
+ SET ParentResourceClaimId = parent_resource_claim_id
+ WHERE ResourceClaimId = claim_id;
+ END IF;
+ END IF;
+
+
+ -- Pop the stack
+ claim_id_stack := (select claim_id_stack[1:array_upper(claim_id_stack, 1) - 1]);
+
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Resource Claim: 'http://ed-fi.org/ods/identity/claims/domains/relationshipBasedData'
+ ----------------------------------------------------------------------------------------------------------------------------
+ claim_name := 'http://ed-fi.org/ods/identity/claims/domains/relationshipBasedData';
+ claim_id := NULL;
+
+ SELECT ResourceClaimId, ParentResourceClaimId INTO claim_id, existing_parent_resource_claim_id
+ FROM dbo.ResourceClaims
+ WHERE ClaimName = claim_name;
+
+ parent_resource_claim_id := claim_id_stack[array_upper(claim_id_stack, 1)];
+
+ IF claim_id IS NULL THEN
+ RAISE NOTICE 'Creating new claim: %', claim_name;
+
+ INSERT INTO dbo.ResourceClaims(ResourceName, ClaimName, ParentResourceClaimId)
+ VALUES ('relationshipBasedData', 'http://ed-fi.org/ods/identity/claims/domains/relationshipBasedData', parent_resource_claim_id)
+ RETURNING ResourceClaimId
+ INTO claim_id;
+ ELSE
+ IF parent_resource_claim_id != existing_parent_resource_claim_id OR (parent_resource_claim_id IS NULL AND existing_parent_resource_claim_id IS NOT NULL) OR (parent_resource_claim_id IS NOT NULL AND existing_parent_resource_claim_id IS NULL) THEN
+ RAISE NOTICE USING MESSAGE = 'Repointing claim ''' || claim_name || ''' (ResourceClaimId=' || claim_id || ') to new parent (from ResourceClaimId=' || COALESCE(existing_parent_resource_claim_id, 0) || ' to ResourceClaimId=' || COALESCE(parent_resource_claim_id, 0) || ')';
+
+ UPDATE dbo.ResourceClaims
+ SET ParentResourceClaimId = parent_resource_claim_id
+ WHERE ResourceClaimId = claim_id;
+ END IF;
+ END IF;
+
+ -- Setting default authorization metadata
+ RAISE NOTICE USING MESSAGE = 'Deleting default action authorizations for resource claim ''' || claim_name || ''' (claimId=' || claim_id || ').';
+
+ DELETE FROM dbo.ResourceClaimActionAuthorizationStrategies
+ WHERE ResourceClaimActionId IN (SELECT ResourceClaimActionId FROM dbo.ResourceClaimActions WHERE ResourceClaimId = claim_id);
+
+ DELETE FROM dbo.ResourceClaimActions
+ WHERE ResourceClaimId = claim_id;
+
+
+ -- Default Create authorization
+ RAISE NOTICE USING MESSAGE = 'Creating action ''Create'' for resource claim ''' || claim_name || ''' (claimId=' || claim_id || ').';
+
+ INSERT INTO dbo.ResourceClaimActions(ResourceClaimId, ActionId)
+ VALUES (claim_id, Create_action_id)
+ RETURNING ResourceClaimActionId
+ INTO resource_claim_action_id;
+
+
+ authorization_strategy_id := NULL;
+
+ SELECT a.AuthorizationStrategyId INTO authorization_strategy_id
+ FROM dbo.AuthorizationStrategies a
+ WHERE a.AuthorizationStrategyName = 'RelationshipsWithEdOrgsAndPeople';
+
+ IF authorization_strategy_id IS NULL THEN
+ RAISE EXCEPTION USING MESSAGE = 'AuthorizationStrategy does not exist: ''RelationshipsWithEdOrgsAndPeople''';
+ END IF;
+
+ RAISE NOTICE USING MESSAGE = 'Adding authorization strategy ''RelationshipsWithEdOrgsAndPeople'' for resource claim ''' || claim_name || ''' (claimId=' || claim_id || ').';
+ INSERT INTO dbo.ResourceClaimActionAuthorizationStrategies(ResourceClaimActionId, AuthorizationStrategyId)
+ VALUES (resource_claim_action_id, authorization_strategy_id);
+
+ -- Default Read authorization
+ RAISE NOTICE USING MESSAGE = 'Creating action ''Read'' for resource claim ''' || claim_name || ''' (claimId=' || claim_id || ').';
+
+ INSERT INTO dbo.ResourceClaimActions(ResourceClaimId, ActionId)
+ VALUES (claim_id, Read_action_id)
+ RETURNING ResourceClaimActionId
+ INTO resource_claim_action_id;
+
+
+ authorization_strategy_id := NULL;
+
+ SELECT a.AuthorizationStrategyId INTO authorization_strategy_id
+ FROM dbo.AuthorizationStrategies a
+ WHERE a.AuthorizationStrategyName = 'RelationshipsWithEdOrgsAndPeople';
+
+ IF authorization_strategy_id IS NULL THEN
+ RAISE EXCEPTION USING MESSAGE = 'AuthorizationStrategy does not exist: ''RelationshipsWithEdOrgsAndPeople''';
+ END IF;
+
+ RAISE NOTICE USING MESSAGE = 'Adding authorization strategy ''RelationshipsWithEdOrgsAndPeople'' for resource claim ''' || claim_name || ''' (claimId=' || claim_id || ').';
+ INSERT INTO dbo.ResourceClaimActionAuthorizationStrategies(ResourceClaimActionId, AuthorizationStrategyId)
+ VALUES (resource_claim_action_id, authorization_strategy_id);
+
+ -- Default Update authorization
+ RAISE NOTICE USING MESSAGE = 'Creating action ''Update'' for resource claim ''' || claim_name || ''' (claimId=' || claim_id || ').';
+
+ INSERT INTO dbo.ResourceClaimActions(ResourceClaimId, ActionId)
+ VALUES (claim_id, Update_action_id)
+ RETURNING ResourceClaimActionId
+ INTO resource_claim_action_id;
+
+
+ authorization_strategy_id := NULL;
+
+ SELECT a.AuthorizationStrategyId INTO authorization_strategy_id
+ FROM dbo.AuthorizationStrategies a
+ WHERE a.AuthorizationStrategyName = 'RelationshipsWithEdOrgsAndPeople';
+
+ IF authorization_strategy_id IS NULL THEN
+ RAISE EXCEPTION USING MESSAGE = 'AuthorizationStrategy does not exist: ''RelationshipsWithEdOrgsAndPeople''';
+ END IF;
+
+ RAISE NOTICE USING MESSAGE = 'Adding authorization strategy ''RelationshipsWithEdOrgsAndPeople'' for resource claim ''' || claim_name || ''' (claimId=' || claim_id || ').';
+ INSERT INTO dbo.ResourceClaimActionAuthorizationStrategies(ResourceClaimActionId, AuthorizationStrategyId)
+ VALUES (resource_claim_action_id, authorization_strategy_id);
+
+ -- Default Delete authorization
+ RAISE NOTICE USING MESSAGE = 'Creating action ''Delete'' for resource claim ''' || claim_name || ''' (claimId=' || claim_id || ').';
+
+ INSERT INTO dbo.ResourceClaimActions(ResourceClaimId, ActionId)
+ VALUES (claim_id, Delete_action_id)
+ RETURNING ResourceClaimActionId
+ INTO resource_claim_action_id;
+
+
+ authorization_strategy_id := NULL;
+
+ SELECT a.AuthorizationStrategyId INTO authorization_strategy_id
+ FROM dbo.AuthorizationStrategies a
+ WHERE a.AuthorizationStrategyName = 'RelationshipsWithEdOrgsAndPeople';
+
+ IF authorization_strategy_id IS NULL THEN
+ RAISE EXCEPTION USING MESSAGE = 'AuthorizationStrategy does not exist: ''RelationshipsWithEdOrgsAndPeople''';
+ END IF;
+
+ RAISE NOTICE USING MESSAGE = 'Adding authorization strategy ''RelationshipsWithEdOrgsAndPeople'' for resource claim ''' || claim_name || ''' (claimId=' || claim_id || ').';
+ INSERT INTO dbo.ResourceClaimActionAuthorizationStrategies(ResourceClaimActionId, AuthorizationStrategyId)
+ VALUES (resource_claim_action_id, authorization_strategy_id);
+
+ -- Processing claimsets for http://ed-fi.org/ods/identity/claims/domains/relationshipBasedData
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Claim set: 'SIS Vendor'
+ ----------------------------------------------------------------------------------------------------------------------------
+ claim_set_name := 'SIS Vendor';
+ claim_set_id := NULL;
+
+ SELECT ClaimSetId INTO claim_set_id
+ FROM dbo.ClaimSets
+ WHERE ClaimSetName = claim_set_name;
+
+ IF claim_set_id IS NULL THEN
+ RAISE NOTICE 'Creating new claim set: %', claim_set_name;
+
+ INSERT INTO dbo.ClaimSets(ClaimSetName)
+ VALUES (claim_set_name)
+ RETURNING ClaimSetId
+ INTO claim_set_id;
+ END IF;
+
+
+ RAISE NOTICE USING MESSAGE = 'Deleting existing actions for claim set ''' || claim_set_name || ''' (claimSetId=' || claim_set_id || ') on resource claim ''' || claim_name || '''.';
+
+ DELETE FROM dbo.ClaimSetResourceClaimActionAuthorizationStrategyOverrides
+ WHERE ClaimSetResourceClaimActionId IN (
+ SELECT ClaimSetResourceClaimActionId FROM dbo.ClaimSetResourceClaimActions WHERE ClaimSetId = claim_set_id AND ResourceClaimId = claim_id);
+
+ DELETE FROM dbo.ClaimSetResourceClaimActions
+ WHERE ClaimSetId = claim_set_id AND ResourceClaimId = claim_id;
+
+
+
+ -- Claim set-specific Create authorization
+ RAISE NOTICE USING MESSAGE = 'Creating ''Create'' action for claim set ''' || claim_set_name || ''' (claimSetId=' || claim_set_id || ', actionId = ' || Create_action_id || ').';
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (claim_id, claim_set_id, Create_action_id) -- Create
+ RETURNING ClaimSetResourceClaimActionId
+ INTO claim_set_resource_claim_action_id;
+
+
+
+
+ -- Claim set-specific Read authorization
+ RAISE NOTICE USING MESSAGE = 'Creating ''Read'' action for claim set ''' || claim_set_name || ''' (claimSetId=' || claim_set_id || ', actionId = ' || Read_action_id || ').';
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (claim_id, claim_set_id, Read_action_id) -- Read
+ RETURNING ClaimSetResourceClaimActionId
+ INTO claim_set_resource_claim_action_id;
+
+
+
+
+ -- Claim set-specific Update authorization
+ RAISE NOTICE USING MESSAGE = 'Creating ''Update'' action for claim set ''' || claim_set_name || ''' (claimSetId=' || claim_set_id || ', actionId = ' || Update_action_id || ').';
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (claim_id, claim_set_id, Update_action_id) -- Update
+ RETURNING ClaimSetResourceClaimActionId
+ INTO claim_set_resource_claim_action_id;
+
+
+
+
+ -- Claim set-specific Delete authorization
+ RAISE NOTICE USING MESSAGE = 'Creating ''Delete'' action for claim set ''' || claim_set_name || ''' (claimSetId=' || claim_set_id || ', actionId = ' || Delete_action_id || ').';
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (claim_id, claim_set_id, Delete_action_id) -- Delete
+ RETURNING ClaimSetResourceClaimActionId
+ INTO claim_set_resource_claim_action_id;
+
+
+
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Claim set: 'Ed-Fi Sandbox'
+ ----------------------------------------------------------------------------------------------------------------------------
+ claim_set_name := 'Ed-Fi Sandbox';
+ claim_set_id := NULL;
+
+ SELECT ClaimSetId INTO claim_set_id
+ FROM dbo.ClaimSets
+ WHERE ClaimSetName = claim_set_name;
+
+ IF claim_set_id IS NULL THEN
+ RAISE NOTICE 'Creating new claim set: %', claim_set_name;
+
+ INSERT INTO dbo.ClaimSets(ClaimSetName)
+ VALUES (claim_set_name)
+ RETURNING ClaimSetId
+ INTO claim_set_id;
+ END IF;
+
+
+ RAISE NOTICE USING MESSAGE = 'Deleting existing actions for claim set ''' || claim_set_name || ''' (claimSetId=' || claim_set_id || ') on resource claim ''' || claim_name || '''.';
+
+ DELETE FROM dbo.ClaimSetResourceClaimActionAuthorizationStrategyOverrides
+ WHERE ClaimSetResourceClaimActionId IN (
+ SELECT ClaimSetResourceClaimActionId FROM dbo.ClaimSetResourceClaimActions WHERE ClaimSetId = claim_set_id AND ResourceClaimId = claim_id);
+
+ DELETE FROM dbo.ClaimSetResourceClaimActions
+ WHERE ClaimSetId = claim_set_id AND ResourceClaimId = claim_id;
+
+
+
+ -- Claim set-specific Create authorization
+ RAISE NOTICE USING MESSAGE = 'Creating ''Create'' action for claim set ''' || claim_set_name || ''' (claimSetId=' || claim_set_id || ', actionId = ' || Create_action_id || ').';
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (claim_id, claim_set_id, Create_action_id) -- Create
+ RETURNING ClaimSetResourceClaimActionId
+ INTO claim_set_resource_claim_action_id;
+
+
+
+
+ -- Claim set-specific Read authorization
+ RAISE NOTICE USING MESSAGE = 'Creating ''Read'' action for claim set ''' || claim_set_name || ''' (claimSetId=' || claim_set_id || ', actionId = ' || Read_action_id || ').';
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (claim_id, claim_set_id, Read_action_id) -- Read
+ RETURNING ClaimSetResourceClaimActionId
+ INTO claim_set_resource_claim_action_id;
+
+
+
+
+ -- Claim set-specific Update authorization
+ RAISE NOTICE USING MESSAGE = 'Creating ''Update'' action for claim set ''' || claim_set_name || ''' (claimSetId=' || claim_set_id || ', actionId = ' || Update_action_id || ').';
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (claim_id, claim_set_id, Update_action_id) -- Update
+ RETURNING ClaimSetResourceClaimActionId
+ INTO claim_set_resource_claim_action_id;
+
+
+
+
+ -- Claim set-specific Delete authorization
+ RAISE NOTICE USING MESSAGE = 'Creating ''Delete'' action for claim set ''' || claim_set_name || ''' (claimSetId=' || claim_set_id || ', actionId = ' || Delete_action_id || ').';
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (claim_id, claim_set_id, Delete_action_id) -- Delete
+ RETURNING ClaimSetResourceClaimActionId
+ INTO claim_set_resource_claim_action_id;
+
+
+
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Claim set: 'District Hosted SIS Vendor'
+ ----------------------------------------------------------------------------------------------------------------------------
+ claim_set_name := 'District Hosted SIS Vendor';
+ claim_set_id := NULL;
+
+ SELECT ClaimSetId INTO claim_set_id
+ FROM dbo.ClaimSets
+ WHERE ClaimSetName = claim_set_name;
+
+ IF claim_set_id IS NULL THEN
+ RAISE NOTICE 'Creating new claim set: %', claim_set_name;
+
+ INSERT INTO dbo.ClaimSets(ClaimSetName)
+ VALUES (claim_set_name)
+ RETURNING ClaimSetId
+ INTO claim_set_id;
+ END IF;
+
+
+ RAISE NOTICE USING MESSAGE = 'Deleting existing actions for claim set ''' || claim_set_name || ''' (claimSetId=' || claim_set_id || ') on resource claim ''' || claim_name || '''.';
+
+ DELETE FROM dbo.ClaimSetResourceClaimActionAuthorizationStrategyOverrides
+ WHERE ClaimSetResourceClaimActionId IN (
+ SELECT ClaimSetResourceClaimActionId FROM dbo.ClaimSetResourceClaimActions WHERE ClaimSetId = claim_set_id AND ResourceClaimId = claim_id);
+
+ DELETE FROM dbo.ClaimSetResourceClaimActions
+ WHERE ClaimSetId = claim_set_id AND ResourceClaimId = claim_id;
+
+
+
+ -- Claim set-specific Create authorization
+ RAISE NOTICE USING MESSAGE = 'Creating ''Create'' action for claim set ''' || claim_set_name || ''' (claimSetId=' || claim_set_id || ', actionId = ' || Create_action_id || ').';
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (claim_id, claim_set_id, Create_action_id) -- Create
+ RETURNING ClaimSetResourceClaimActionId
+ INTO claim_set_resource_claim_action_id;
+
+
+
+
+ -- Claim set-specific Read authorization
+ RAISE NOTICE USING MESSAGE = 'Creating ''Read'' action for claim set ''' || claim_set_name || ''' (claimSetId=' || claim_set_id || ', actionId = ' || Read_action_id || ').';
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (claim_id, claim_set_id, Read_action_id) -- Read
+ RETURNING ClaimSetResourceClaimActionId
+ INTO claim_set_resource_claim_action_id;
+
+
+
+
+ -- Claim set-specific Update authorization
+ RAISE NOTICE USING MESSAGE = 'Creating ''Update'' action for claim set ''' || claim_set_name || ''' (claimSetId=' || claim_set_id || ', actionId = ' || Update_action_id || ').';
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (claim_id, claim_set_id, Update_action_id) -- Update
+ RETURNING ClaimSetResourceClaimActionId
+ INTO claim_set_resource_claim_action_id;
+
+
+
+
+ -- Claim set-specific Delete authorization
+ RAISE NOTICE USING MESSAGE = 'Creating ''Delete'' action for claim set ''' || claim_set_name || ''' (claimSetId=' || claim_set_id || ', actionId = ' || Delete_action_id || ').';
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (claim_id, claim_set_id, Delete_action_id) -- Delete
+ RETURNING ClaimSetResourceClaimActionId
+ INTO claim_set_resource_claim_action_id;
+
+
+
+ -- Push claimId to the stack
+ claim_id_stack := array_append(claim_id_stack, claim_id);
+
+ -- Processing children of http://ed-fi.org/ods/identity/claims/domains/relationshipBasedData
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Resource Claim: 'http://ed-fi.org/ods/identity/claims/studentSection504ProgramAssociation'
+ ----------------------------------------------------------------------------------------------------------------------------
+ claim_name := 'http://ed-fi.org/ods/identity/claims/studentSection504ProgramAssociation';
+ claim_id := NULL;
+
+ SELECT ResourceClaimId, ParentResourceClaimId INTO claim_id, existing_parent_resource_claim_id
+ FROM dbo.ResourceClaims
+ WHERE ClaimName = claim_name;
+
+ parent_resource_claim_id := claim_id_stack[array_upper(claim_id_stack, 1)];
+
+ IF claim_id IS NULL THEN
+ RAISE NOTICE 'Creating new claim: %', claim_name;
+
+ INSERT INTO dbo.ResourceClaims(ResourceName, ClaimName, ParentResourceClaimId)
+ VALUES ('studentSection504ProgramAssociation', 'http://ed-fi.org/ods/identity/claims/studentSection504ProgramAssociation', parent_resource_claim_id)
+ RETURNING ResourceClaimId
+ INTO claim_id;
+ ELSE
+ IF parent_resource_claim_id != existing_parent_resource_claim_id OR (parent_resource_claim_id IS NULL AND existing_parent_resource_claim_id IS NOT NULL) OR (parent_resource_claim_id IS NOT NULL AND existing_parent_resource_claim_id IS NULL) THEN
+ RAISE NOTICE USING MESSAGE = 'Repointing claim ''' || claim_name || ''' (ResourceClaimId=' || claim_id || ') to new parent (from ResourceClaimId=' || COALESCE(existing_parent_resource_claim_id, 0) || ' to ResourceClaimId=' || COALESCE(parent_resource_claim_id, 0) || ')';
+
+ UPDATE dbo.ResourceClaims
+ SET ParentResourceClaimId = parent_resource_claim_id
+ WHERE ResourceClaimId = claim_id;
+ END IF;
+ END IF;
+
+
+ -- Pop the stack
+ claim_id_stack := (select claim_id_stack[1:array_upper(claim_id_stack, 1) - 1]);
+
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Resource Claim: 'http://ed-fi.org/ods/identity/claims/domains/relationshipBasedData'
+ ----------------------------------------------------------------------------------------------------------------------------
+ claim_name := 'http://ed-fi.org/ods/identity/claims/domains/relationshipBasedData';
+ claim_id := NULL;
+
+ SELECT ResourceClaimId, ParentResourceClaimId INTO claim_id, existing_parent_resource_claim_id
+ FROM dbo.ResourceClaims
+ WHERE ClaimName = claim_name;
+
+ parent_resource_claim_id := claim_id_stack[array_upper(claim_id_stack, 1)];
+
+ IF claim_id IS NULL THEN
+ RAISE NOTICE 'Creating new claim: %', claim_name;
+
+ INSERT INTO dbo.ResourceClaims(ResourceName, ClaimName, ParentResourceClaimId)
+ VALUES ('relationshipBasedData', 'http://ed-fi.org/ods/identity/claims/domains/relationshipBasedData', parent_resource_claim_id)
+ RETURNING ResourceClaimId
+ INTO claim_id;
+ ELSE
+ IF parent_resource_claim_id != existing_parent_resource_claim_id OR (parent_resource_claim_id IS NULL AND existing_parent_resource_claim_id IS NOT NULL) OR (parent_resource_claim_id IS NOT NULL AND existing_parent_resource_claim_id IS NULL) THEN
+ RAISE NOTICE USING MESSAGE = 'Repointing claim ''' || claim_name || ''' (ResourceClaimId=' || claim_id || ') to new parent (from ResourceClaimId=' || COALESCE(existing_parent_resource_claim_id, 0) || ' to ResourceClaimId=' || COALESCE(parent_resource_claim_id, 0) || ')';
+
+ UPDATE dbo.ResourceClaims
+ SET ParentResourceClaimId = parent_resource_claim_id
+ WHERE ResourceClaimId = claim_id;
+ END IF;
+ END IF;
+
+ -- Setting default authorization metadata
+ RAISE NOTICE USING MESSAGE = 'Deleting default action authorizations for resource claim ''' || claim_name || ''' (claimId=' || claim_id || ').';
+
+ DELETE FROM dbo.ResourceClaimActionAuthorizationStrategies
+ WHERE ResourceClaimActionId IN (SELECT ResourceClaimActionId FROM dbo.ResourceClaimActions WHERE ResourceClaimId = claim_id);
+
+ DELETE FROM dbo.ResourceClaimActions
+ WHERE ResourceClaimId = claim_id;
+
+
+ -- Default Create authorization
+ RAISE NOTICE USING MESSAGE = 'Creating action ''Create'' for resource claim ''' || claim_name || ''' (claimId=' || claim_id || ').';
+
+ INSERT INTO dbo.ResourceClaimActions(ResourceClaimId, ActionId)
+ VALUES (claim_id, Create_action_id)
+ RETURNING ResourceClaimActionId
+ INTO resource_claim_action_id;
+
+
+ authorization_strategy_id := NULL;
+
+ SELECT a.AuthorizationStrategyId INTO authorization_strategy_id
+ FROM dbo.AuthorizationStrategies a
+ WHERE a.AuthorizationStrategyName = 'RelationshipsWithEdOrgsAndPeople';
+
+ IF authorization_strategy_id IS NULL THEN
+ RAISE EXCEPTION USING MESSAGE = 'AuthorizationStrategy does not exist: ''RelationshipsWithEdOrgsAndPeople''';
+ END IF;
+
+ RAISE NOTICE USING MESSAGE = 'Adding authorization strategy ''RelationshipsWithEdOrgsAndPeople'' for resource claim ''' || claim_name || ''' (claimId=' || claim_id || ').';
+ INSERT INTO dbo.ResourceClaimActionAuthorizationStrategies(ResourceClaimActionId, AuthorizationStrategyId)
+ VALUES (resource_claim_action_id, authorization_strategy_id);
+
+ -- Default Read authorization
+ RAISE NOTICE USING MESSAGE = 'Creating action ''Read'' for resource claim ''' || claim_name || ''' (claimId=' || claim_id || ').';
+
+ INSERT INTO dbo.ResourceClaimActions(ResourceClaimId, ActionId)
+ VALUES (claim_id, Read_action_id)
+ RETURNING ResourceClaimActionId
+ INTO resource_claim_action_id;
+
+
+ authorization_strategy_id := NULL;
+
+ SELECT a.AuthorizationStrategyId INTO authorization_strategy_id
+ FROM dbo.AuthorizationStrategies a
+ WHERE a.AuthorizationStrategyName = 'RelationshipsWithEdOrgsAndPeople';
+
+ IF authorization_strategy_id IS NULL THEN
+ RAISE EXCEPTION USING MESSAGE = 'AuthorizationStrategy does not exist: ''RelationshipsWithEdOrgsAndPeople''';
+ END IF;
+
+ RAISE NOTICE USING MESSAGE = 'Adding authorization strategy ''RelationshipsWithEdOrgsAndPeople'' for resource claim ''' || claim_name || ''' (claimId=' || claim_id || ').';
+ INSERT INTO dbo.ResourceClaimActionAuthorizationStrategies(ResourceClaimActionId, AuthorizationStrategyId)
+ VALUES (resource_claim_action_id, authorization_strategy_id);
+
+ -- Default Update authorization
+ RAISE NOTICE USING MESSAGE = 'Creating action ''Update'' for resource claim ''' || claim_name || ''' (claimId=' || claim_id || ').';
+
+ INSERT INTO dbo.ResourceClaimActions(ResourceClaimId, ActionId)
+ VALUES (claim_id, Update_action_id)
+ RETURNING ResourceClaimActionId
+ INTO resource_claim_action_id;
+
+
+ authorization_strategy_id := NULL;
+
+ SELECT a.AuthorizationStrategyId INTO authorization_strategy_id
+ FROM dbo.AuthorizationStrategies a
+ WHERE a.AuthorizationStrategyName = 'RelationshipsWithEdOrgsAndPeople';
+
+ IF authorization_strategy_id IS NULL THEN
+ RAISE EXCEPTION USING MESSAGE = 'AuthorizationStrategy does not exist: ''RelationshipsWithEdOrgsAndPeople''';
+ END IF;
+
+ RAISE NOTICE USING MESSAGE = 'Adding authorization strategy ''RelationshipsWithEdOrgsAndPeople'' for resource claim ''' || claim_name || ''' (claimId=' || claim_id || ').';
+ INSERT INTO dbo.ResourceClaimActionAuthorizationStrategies(ResourceClaimActionId, AuthorizationStrategyId)
+ VALUES (resource_claim_action_id, authorization_strategy_id);
+
+ -- Default Delete authorization
+ RAISE NOTICE USING MESSAGE = 'Creating action ''Delete'' for resource claim ''' || claim_name || ''' (claimId=' || claim_id || ').';
+
+ INSERT INTO dbo.ResourceClaimActions(ResourceClaimId, ActionId)
+ VALUES (claim_id, Delete_action_id)
+ RETURNING ResourceClaimActionId
+ INTO resource_claim_action_id;
+
+
+ authorization_strategy_id := NULL;
+
+ SELECT a.AuthorizationStrategyId INTO authorization_strategy_id
+ FROM dbo.AuthorizationStrategies a
+ WHERE a.AuthorizationStrategyName = 'RelationshipsWithEdOrgsAndPeople';
+
+ IF authorization_strategy_id IS NULL THEN
+ RAISE EXCEPTION USING MESSAGE = 'AuthorizationStrategy does not exist: ''RelationshipsWithEdOrgsAndPeople''';
+ END IF;
+
+ RAISE NOTICE USING MESSAGE = 'Adding authorization strategy ''RelationshipsWithEdOrgsAndPeople'' for resource claim ''' || claim_name || ''' (claimId=' || claim_id || ').';
+ INSERT INTO dbo.ResourceClaimActionAuthorizationStrategies(ResourceClaimActionId, AuthorizationStrategyId)
+ VALUES (resource_claim_action_id, authorization_strategy_id);
+
+ -- Processing claimsets for http://ed-fi.org/ods/identity/claims/domains/relationshipBasedData
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Claim set: 'SIS Vendor'
+ ----------------------------------------------------------------------------------------------------------------------------
+ claim_set_name := 'SIS Vendor';
+ claim_set_id := NULL;
+
+ SELECT ClaimSetId INTO claim_set_id
+ FROM dbo.ClaimSets
+ WHERE ClaimSetName = claim_set_name;
+
+ IF claim_set_id IS NULL THEN
+ RAISE NOTICE 'Creating new claim set: %', claim_set_name;
+
+ INSERT INTO dbo.ClaimSets(ClaimSetName)
+ VALUES (claim_set_name)
+ RETURNING ClaimSetId
+ INTO claim_set_id;
+ END IF;
+
+
+ RAISE NOTICE USING MESSAGE = 'Deleting existing actions for claim set ''' || claim_set_name || ''' (claimSetId=' || claim_set_id || ') on resource claim ''' || claim_name || '''.';
+
+ DELETE FROM dbo.ClaimSetResourceClaimActionAuthorizationStrategyOverrides
+ WHERE ClaimSetResourceClaimActionId IN (
+ SELECT ClaimSetResourceClaimActionId FROM dbo.ClaimSetResourceClaimActions WHERE ClaimSetId = claim_set_id AND ResourceClaimId = claim_id);
+
+ DELETE FROM dbo.ClaimSetResourceClaimActions
+ WHERE ClaimSetId = claim_set_id AND ResourceClaimId = claim_id;
+
+
+
+ -- Claim set-specific Create authorization
+ RAISE NOTICE USING MESSAGE = 'Creating ''Create'' action for claim set ''' || claim_set_name || ''' (claimSetId=' || claim_set_id || ', actionId = ' || Create_action_id || ').';
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (claim_id, claim_set_id, Create_action_id) -- Create
+ RETURNING ClaimSetResourceClaimActionId
+ INTO claim_set_resource_claim_action_id;
+
+
+
+
+ -- Claim set-specific Read authorization
+ RAISE NOTICE USING MESSAGE = 'Creating ''Read'' action for claim set ''' || claim_set_name || ''' (claimSetId=' || claim_set_id || ', actionId = ' || Read_action_id || ').';
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (claim_id, claim_set_id, Read_action_id) -- Read
+ RETURNING ClaimSetResourceClaimActionId
+ INTO claim_set_resource_claim_action_id;
+
+
+
+
+ -- Claim set-specific Update authorization
+ RAISE NOTICE USING MESSAGE = 'Creating ''Update'' action for claim set ''' || claim_set_name || ''' (claimSetId=' || claim_set_id || ', actionId = ' || Update_action_id || ').';
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (claim_id, claim_set_id, Update_action_id) -- Update
+ RETURNING ClaimSetResourceClaimActionId
+ INTO claim_set_resource_claim_action_id;
+
+
+
+
+ -- Claim set-specific Delete authorization
+ RAISE NOTICE USING MESSAGE = 'Creating ''Delete'' action for claim set ''' || claim_set_name || ''' (claimSetId=' || claim_set_id || ', actionId = ' || Delete_action_id || ').';
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (claim_id, claim_set_id, Delete_action_id) -- Delete
+ RETURNING ClaimSetResourceClaimActionId
+ INTO claim_set_resource_claim_action_id;
+
+
+
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Claim set: 'Ed-Fi Sandbox'
+ ----------------------------------------------------------------------------------------------------------------------------
+ claim_set_name := 'Ed-Fi Sandbox';
+ claim_set_id := NULL;
+
+ SELECT ClaimSetId INTO claim_set_id
+ FROM dbo.ClaimSets
+ WHERE ClaimSetName = claim_set_name;
+
+ IF claim_set_id IS NULL THEN
+ RAISE NOTICE 'Creating new claim set: %', claim_set_name;
+
+ INSERT INTO dbo.ClaimSets(ClaimSetName)
+ VALUES (claim_set_name)
+ RETURNING ClaimSetId
+ INTO claim_set_id;
+ END IF;
+
+
+ RAISE NOTICE USING MESSAGE = 'Deleting existing actions for claim set ''' || claim_set_name || ''' (claimSetId=' || claim_set_id || ') on resource claim ''' || claim_name || '''.';
+
+ DELETE FROM dbo.ClaimSetResourceClaimActionAuthorizationStrategyOverrides
+ WHERE ClaimSetResourceClaimActionId IN (
+ SELECT ClaimSetResourceClaimActionId FROM dbo.ClaimSetResourceClaimActions WHERE ClaimSetId = claim_set_id AND ResourceClaimId = claim_id);
+
+ DELETE FROM dbo.ClaimSetResourceClaimActions
+ WHERE ClaimSetId = claim_set_id AND ResourceClaimId = claim_id;
+
+
+
+ -- Claim set-specific Create authorization
+ RAISE NOTICE USING MESSAGE = 'Creating ''Create'' action for claim set ''' || claim_set_name || ''' (claimSetId=' || claim_set_id || ', actionId = ' || Create_action_id || ').';
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (claim_id, claim_set_id, Create_action_id) -- Create
+ RETURNING ClaimSetResourceClaimActionId
+ INTO claim_set_resource_claim_action_id;
+
+
+
+
+ -- Claim set-specific Read authorization
+ RAISE NOTICE USING MESSAGE = 'Creating ''Read'' action for claim set ''' || claim_set_name || ''' (claimSetId=' || claim_set_id || ', actionId = ' || Read_action_id || ').';
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (claim_id, claim_set_id, Read_action_id) -- Read
+ RETURNING ClaimSetResourceClaimActionId
+ INTO claim_set_resource_claim_action_id;
+
+
+
+
+ -- Claim set-specific Update authorization
+ RAISE NOTICE USING MESSAGE = 'Creating ''Update'' action for claim set ''' || claim_set_name || ''' (claimSetId=' || claim_set_id || ', actionId = ' || Update_action_id || ').';
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (claim_id, claim_set_id, Update_action_id) -- Update
+ RETURNING ClaimSetResourceClaimActionId
+ INTO claim_set_resource_claim_action_id;
+
+
+
+
+ -- Claim set-specific Delete authorization
+ RAISE NOTICE USING MESSAGE = 'Creating ''Delete'' action for claim set ''' || claim_set_name || ''' (claimSetId=' || claim_set_id || ', actionId = ' || Delete_action_id || ').';
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (claim_id, claim_set_id, Delete_action_id) -- Delete
+ RETURNING ClaimSetResourceClaimActionId
+ INTO claim_set_resource_claim_action_id;
+
+
+
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Claim set: 'District Hosted SIS Vendor'
+ ----------------------------------------------------------------------------------------------------------------------------
+ claim_set_name := 'District Hosted SIS Vendor';
+ claim_set_id := NULL;
+
+ SELECT ClaimSetId INTO claim_set_id
+ FROM dbo.ClaimSets
+ WHERE ClaimSetName = claim_set_name;
+
+ IF claim_set_id IS NULL THEN
+ RAISE NOTICE 'Creating new claim set: %', claim_set_name;
+
+ INSERT INTO dbo.ClaimSets(ClaimSetName)
+ VALUES (claim_set_name)
+ RETURNING ClaimSetId
+ INTO claim_set_id;
+ END IF;
+
+
+ RAISE NOTICE USING MESSAGE = 'Deleting existing actions for claim set ''' || claim_set_name || ''' (claimSetId=' || claim_set_id || ') on resource claim ''' || claim_name || '''.';
+
+ DELETE FROM dbo.ClaimSetResourceClaimActionAuthorizationStrategyOverrides
+ WHERE ClaimSetResourceClaimActionId IN (
+ SELECT ClaimSetResourceClaimActionId FROM dbo.ClaimSetResourceClaimActions WHERE ClaimSetId = claim_set_id AND ResourceClaimId = claim_id);
+
+ DELETE FROM dbo.ClaimSetResourceClaimActions
+ WHERE ClaimSetId = claim_set_id AND ResourceClaimId = claim_id;
+
+
+
+ -- Claim set-specific Create authorization
+ RAISE NOTICE USING MESSAGE = 'Creating ''Create'' action for claim set ''' || claim_set_name || ''' (claimSetId=' || claim_set_id || ', actionId = ' || Create_action_id || ').';
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (claim_id, claim_set_id, Create_action_id) -- Create
+ RETURNING ClaimSetResourceClaimActionId
+ INTO claim_set_resource_claim_action_id;
+
+
+
+
+ -- Claim set-specific Read authorization
+ RAISE NOTICE USING MESSAGE = 'Creating ''Read'' action for claim set ''' || claim_set_name || ''' (claimSetId=' || claim_set_id || ', actionId = ' || Read_action_id || ').';
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (claim_id, claim_set_id, Read_action_id) -- Read
+ RETURNING ClaimSetResourceClaimActionId
+ INTO claim_set_resource_claim_action_id;
+
+
+
+
+ -- Claim set-specific Update authorization
+ RAISE NOTICE USING MESSAGE = 'Creating ''Update'' action for claim set ''' || claim_set_name || ''' (claimSetId=' || claim_set_id || ', actionId = ' || Update_action_id || ').';
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (claim_id, claim_set_id, Update_action_id) -- Update
+ RETURNING ClaimSetResourceClaimActionId
+ INTO claim_set_resource_claim_action_id;
+
+
+
+
+ -- Claim set-specific Delete authorization
+ RAISE NOTICE USING MESSAGE = 'Creating ''Delete'' action for claim set ''' || claim_set_name || ''' (claimSetId=' || claim_set_id || ', actionId = ' || Delete_action_id || ').';
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (claim_id, claim_set_id, Delete_action_id) -- Delete
+ RETURNING ClaimSetResourceClaimActionId
+ INTO claim_set_resource_claim_action_id;
+
+
+
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Claim set: 'Assessment Vendor'
+ ----------------------------------------------------------------------------------------------------------------------------
+ claim_set_name := 'Assessment Vendor';
+ claim_set_id := NULL;
+
+ SELECT ClaimSetId INTO claim_set_id
+ FROM dbo.ClaimSets
+ WHERE ClaimSetName = claim_set_name;
+
+ IF claim_set_id IS NULL THEN
+ RAISE NOTICE 'Creating new claim set: %', claim_set_name;
+
+ INSERT INTO dbo.ClaimSets(ClaimSetName)
+ VALUES (claim_set_name)
+ RETURNING ClaimSetId
+ INTO claim_set_id;
+ END IF;
+
+
+ RAISE NOTICE USING MESSAGE = 'Deleting existing actions for claim set ''' || claim_set_name || ''' (claimSetId=' || claim_set_id || ') on resource claim ''' || claim_name || '''.';
+
+ DELETE FROM dbo.ClaimSetResourceClaimActionAuthorizationStrategyOverrides
+ WHERE ClaimSetResourceClaimActionId IN (
+ SELECT ClaimSetResourceClaimActionId FROM dbo.ClaimSetResourceClaimActions WHERE ClaimSetId = claim_set_id AND ResourceClaimId = claim_id);
+
+ DELETE FROM dbo.ClaimSetResourceClaimActions
+ WHERE ClaimSetId = claim_set_id AND ResourceClaimId = claim_id;
+
+
+
+ -- Claim set-specific Read authorization
+ RAISE NOTICE USING MESSAGE = 'Creating ''Read'' action for claim set ''' || claim_set_name || ''' (claimSetId=' || claim_set_id || ', actionId = ' || Read_action_id || ').';
+
+ INSERT INTO dbo.ClaimSetResourceClaimActions(ResourceClaimId, ClaimSetId, ActionId)
+ VALUES (claim_id, claim_set_id, Read_action_id) -- Read
+ RETURNING ClaimSetResourceClaimActionId
+ INTO claim_set_resource_claim_action_id;
+
+
+
+ -- Push claimId to the stack
+ claim_id_stack := array_append(claim_id_stack, claim_id);
+
+ -- Processing children of http://ed-fi.org/ods/identity/claims/domains/relationshipBasedData
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Resource Claim: 'http://ed-fi.org/ods/identity/claims/studentEducationOrganizationAssessmentAccommodation'
+ ----------------------------------------------------------------------------------------------------------------------------
+ claim_name := 'http://ed-fi.org/ods/identity/claims/studentEducationOrganizationAssessmentAccommodation';
+ claim_id := NULL;
+
+ SELECT ResourceClaimId, ParentResourceClaimId INTO claim_id, existing_parent_resource_claim_id
+ FROM dbo.ResourceClaims
+ WHERE ClaimName = claim_name;
+
+ parent_resource_claim_id := claim_id_stack[array_upper(claim_id_stack, 1)];
+
+ IF claim_id IS NULL THEN
+ RAISE NOTICE 'Creating new claim: %', claim_name;
+
+ INSERT INTO dbo.ResourceClaims(ResourceName, ClaimName, ParentResourceClaimId)
+ VALUES ('studentEducationOrganizationAssessmentAccommodation', 'http://ed-fi.org/ods/identity/claims/studentEducationOrganizationAssessmentAccommodation', parent_resource_claim_id)
+ RETURNING ResourceClaimId
+ INTO claim_id;
+ ELSE
+ IF parent_resource_claim_id != existing_parent_resource_claim_id OR (parent_resource_claim_id IS NULL AND existing_parent_resource_claim_id IS NOT NULL) OR (parent_resource_claim_id IS NOT NULL AND existing_parent_resource_claim_id IS NULL) THEN
+ RAISE NOTICE USING MESSAGE = 'Repointing claim ''' || claim_name || ''' (ResourceClaimId=' || claim_id || ') to new parent (from ResourceClaimId=' || COALESCE(existing_parent_resource_claim_id, 0) || ' to ResourceClaimId=' || COALESCE(parent_resource_claim_id, 0) || ')';
+
+ UPDATE dbo.ResourceClaims
+ SET ParentResourceClaimId = parent_resource_claim_id
+ WHERE ResourceClaimId = claim_id;
+ END IF;
+ END IF;
+
+ ----------------------------------------------------------------------------------------------------------------------------
+ -- Resource Claim: 'http://ed-fi.org/ods/identity/claims/studentEducationOrganizationAssessmentAccommodationGeneralAccommodation'
+ ----------------------------------------------------------------------------------------------------------------------------
+ claim_name := 'http://ed-fi.org/ods/identity/claims/studentEducationOrganizationAssessmentAccommodationGeneralAccommodation';
+ claim_id := NULL;
+
+ SELECT ResourceClaimId, ParentResourceClaimId INTO claim_id, existing_parent_resource_claim_id
+ FROM dbo.ResourceClaims
+ WHERE ClaimName = claim_name;
+
+ parent_resource_claim_id := claim_id_stack[array_upper(claim_id_stack, 1)];
+
+ IF claim_id IS NULL THEN
+ RAISE NOTICE 'Creating new claim: %', claim_name;
+
+ INSERT INTO dbo.ResourceClaims(ResourceName, ClaimName, ParentResourceClaimId)
+ VALUES ('studentEducationOrganizationAssessmentAccommodationGeneralAccommodation', 'http://ed-fi.org/ods/identity/claims/studentEducationOrganizationAssessmentAccommodationGeneralAccommodation', parent_resource_claim_id)
+ RETURNING ResourceClaimId
+ INTO claim_id;
+ ELSE
+ IF parent_resource_claim_id != existing_parent_resource_claim_id OR (parent_resource_claim_id IS NULL AND existing_parent_resource_claim_id IS NOT NULL) OR (parent_resource_claim_id IS NOT NULL AND existing_parent_resource_claim_id IS NULL) THEN
+ RAISE NOTICE USING MESSAGE = 'Repointing claim ''' || claim_name || ''' (ResourceClaimId=' || claim_id || ') to new parent (from ResourceClaimId=' || COALESCE(existing_parent_resource_claim_id, 0) || ' to ResourceClaimId=' || COALESCE(parent_resource_claim_id, 0) || ')';
+
+ UPDATE dbo.ResourceClaims
+ SET ParentResourceClaimId = parent_resource_claim_id
+ WHERE ResourceClaimId = claim_id;
+ END IF;
+ END IF;
+
+
+ -- Pop the stack
+ claim_id_stack := (select claim_id_stack[1:array_upper(claim_id_stack, 1) - 1]);
+
+
+ -- Pop the stack
+ claim_id_stack := (select claim_id_stack[1:array_upper(claim_id_stack, 1) - 1]);
+
+ COMMIT;
+
+ -- TODO: Remove - For interactive development only
+ -- SELECT dbo.GetAuthorizationMetadataDocument();
+ -- ROLLBACK;
+END $$;
diff --git a/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/PgSql/Data/Security/2200-AssessmentRegistration-security-metadata.xml b/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/PgSql/Data/Security/2200-AssessmentRegistration-security-metadata.xml
new file mode 100644
index 0000000000..a42736fe8f
--- /dev/null
+++ b/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/PgSql/Data/Security/2200-AssessmentRegistration-security-metadata.xml
@@ -0,0 +1,251 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/PgSql/Structure/Ods/0020-Tables.sql b/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/PgSql/Structure/Ods/0020-Tables.sql
index 7011836bfd..f115061185 100644
--- a/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/PgSql/Structure/Ods/0020-Tables.sql
+++ b/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/PgSql/Structure/Ods/0020-Tables.sql
@@ -139,6 +139,47 @@ CREATE TABLE edfi.AssessmentAcademicSubject (
);
ALTER TABLE edfi.AssessmentAcademicSubject ALTER COLUMN CreateDate SET DEFAULT current_timestamp AT TIME ZONE 'UTC';
+-- Table edfi.AssessmentAdministration --
+CREATE TABLE edfi.AssessmentAdministration (
+ AdministrationIdentifier VARCHAR(255) NOT NULL,
+ AssessmentIdentifier VARCHAR(60) NOT NULL,
+ AssigningEducationOrganizationId BIGINT NOT NULL,
+ Namespace VARCHAR(255) NOT NULL,
+ Discriminator VARCHAR(128) NULL,
+ CreateDate TIMESTAMP NOT NULL,
+ LastModifiedDate TIMESTAMP NOT NULL,
+ Id UUID NOT NULL,
+ CONSTRAINT AssessmentAdministration_PK PRIMARY KEY (AdministrationIdentifier, AssessmentIdentifier, AssigningEducationOrganizationId, Namespace)
+);
+ALTER TABLE edfi.AssessmentAdministration ALTER COLUMN CreateDate SET DEFAULT current_timestamp AT TIME ZONE 'UTC';
+ALTER TABLE edfi.AssessmentAdministration ALTER COLUMN Id SET DEFAULT gen_random_uuid();
+ALTER TABLE edfi.AssessmentAdministration ALTER COLUMN LastModifiedDate SET DEFAULT current_timestamp AT TIME ZONE 'UTC';
+
+-- Table edfi.AssessmentAdministrationAssessmentAdminstrationPeriod --
+CREATE TABLE edfi.AssessmentAdministrationAssessmentAdminstrationPeriod (
+ AdministrationIdentifier VARCHAR(255) NOT NULL,
+ AssessmentIdentifier VARCHAR(60) NOT NULL,
+ AssigningEducationOrganizationId BIGINT NOT NULL,
+ Namespace VARCHAR(255) NOT NULL,
+ BeginDate DATE NOT NULL,
+ EndDate DATE NULL,
+ CreateDate TIMESTAMP NOT NULL,
+ CONSTRAINT AssessmentAdministrationAssessmentAdminstrationPeriod_PK PRIMARY KEY (AdministrationIdentifier, AssessmentIdentifier, AssigningEducationOrganizationId, Namespace, BeginDate)
+);
+ALTER TABLE edfi.AssessmentAdministrationAssessmentAdminstrationPeriod ALTER COLUMN CreateDate SET DEFAULT current_timestamp AT TIME ZONE 'UTC';
+
+-- Table edfi.AssessmentAdministrationAssessmentBatteryPart --
+CREATE TABLE edfi.AssessmentAdministrationAssessmentBatteryPart (
+ AdministrationIdentifier VARCHAR(255) NOT NULL,
+ AssessmentIdentifier VARCHAR(60) NOT NULL,
+ AssigningEducationOrganizationId BIGINT NOT NULL,
+ Namespace VARCHAR(255) NOT NULL,
+ AssessmentBatteryPartName VARCHAR(65) NOT NULL,
+ CreateDate TIMESTAMP NOT NULL,
+ CONSTRAINT AssessmentAdministrationAssessmentBatteryPart_PK PRIMARY KEY (AdministrationIdentifier, AssessmentIdentifier, AssigningEducationOrganizationId, Namespace, AssessmentBatteryPartName)
+);
+ALTER TABLE edfi.AssessmentAdministrationAssessmentBatteryPart ALTER COLUMN CreateDate SET DEFAULT current_timestamp AT TIME ZONE 'UTC';
+
-- Table edfi.AssessmentAssessedGradeLevel --
CREATE TABLE edfi.AssessmentAssessedGradeLevel (
AssessmentIdentifier VARCHAR(60) NOT NULL,
@@ -149,6 +190,32 @@ CREATE TABLE edfi.AssessmentAssessedGradeLevel (
);
ALTER TABLE edfi.AssessmentAssessedGradeLevel ALTER COLUMN CreateDate SET DEFAULT current_timestamp AT TIME ZONE 'UTC';
+-- Table edfi.AssessmentBatteryPart --
+CREATE TABLE edfi.AssessmentBatteryPart (
+ AssessmentBatteryPartName VARCHAR(65) NOT NULL,
+ AssessmentIdentifier VARCHAR(60) NOT NULL,
+ Namespace VARCHAR(255) NOT NULL,
+ Discriminator VARCHAR(128) NULL,
+ CreateDate TIMESTAMP NOT NULL,
+ LastModifiedDate TIMESTAMP NOT NULL,
+ Id UUID NOT NULL,
+ CONSTRAINT AssessmentBatteryPart_PK PRIMARY KEY (AssessmentBatteryPartName, AssessmentIdentifier, Namespace)
+);
+ALTER TABLE edfi.AssessmentBatteryPart ALTER COLUMN CreateDate SET DEFAULT current_timestamp AT TIME ZONE 'UTC';
+ALTER TABLE edfi.AssessmentBatteryPart ALTER COLUMN Id SET DEFAULT gen_random_uuid();
+ALTER TABLE edfi.AssessmentBatteryPart ALTER COLUMN LastModifiedDate SET DEFAULT current_timestamp AT TIME ZONE 'UTC';
+
+-- Table edfi.AssessmentBatteryPartObjectiveAssessment --
+CREATE TABLE edfi.AssessmentBatteryPartObjectiveAssessment (
+ AssessmentBatteryPartName VARCHAR(65) NOT NULL,
+ AssessmentIdentifier VARCHAR(60) NOT NULL,
+ Namespace VARCHAR(255) NOT NULL,
+ IdentificationCode VARCHAR(60) NOT NULL,
+ CreateDate TIMESTAMP NOT NULL,
+ CONSTRAINT AssessmentBatteryPartObjectiveAssessment_PK PRIMARY KEY (AssessmentBatteryPartName, AssessmentIdentifier, Namespace, IdentificationCode)
+);
+ALTER TABLE edfi.AssessmentBatteryPartObjectiveAssessment ALTER COLUMN CreateDate SET DEFAULT current_timestamp AT TIME ZONE 'UTC';
+
-- Table edfi.AssessmentCategoryDescriptor --
CREATE TABLE edfi.AssessmentCategoryDescriptor (
AssessmentCategoryDescriptorId INT NOT NULL,
@@ -386,6 +453,40 @@ CREATE TABLE edfi.AssessmentSection (
);
ALTER TABLE edfi.AssessmentSection ALTER COLUMN CreateDate SET DEFAULT current_timestamp AT TIME ZONE 'UTC';
+-- Table edfi.AssesssmentAdministrationParticipation --
+CREATE TABLE edfi.AssesssmentAdministrationParticipation (
+ AdministrationIdentifier VARCHAR(255) NOT NULL,
+ AssessmentIdentifier VARCHAR(60) NOT NULL,
+ AssigningEducationOrganizationId BIGINT NOT NULL,
+ Namespace VARCHAR(255) NOT NULL,
+ ParticipatingEducationOrganizationId BIGINT NOT NULL,
+ Discriminator VARCHAR(128) NULL,
+ CreateDate TIMESTAMP NOT NULL,
+ LastModifiedDate TIMESTAMP NOT NULL,
+ Id UUID NOT NULL,
+ CONSTRAINT AssesssmentAdministrationParticipation_PK PRIMARY KEY (AdministrationIdentifier, AssessmentIdentifier, AssigningEducationOrganizationId, Namespace, ParticipatingEducationOrganizationId)
+);
+ALTER TABLE edfi.AssesssmentAdministrationParticipation ALTER COLUMN CreateDate SET DEFAULT current_timestamp AT TIME ZONE 'UTC';
+ALTER TABLE edfi.AssesssmentAdministrationParticipation ALTER COLUMN Id SET DEFAULT gen_random_uuid();
+ALTER TABLE edfi.AssesssmentAdministrationParticipation ALTER COLUMN LastModifiedDate SET DEFAULT current_timestamp AT TIME ZONE 'UTC';
+
+-- Table edfi.AssesssmentAdministrationParticipationAdministrationPoin_c21adc --
+CREATE TABLE edfi.AssesssmentAdministrationParticipationAdministrationPoin_c21adc (
+ AdministrationIdentifier VARCHAR(255) NOT NULL,
+ AssessmentIdentifier VARCHAR(60) NOT NULL,
+ AssigningEducationOrganizationId BIGINT NOT NULL,
+ Namespace VARCHAR(255) NOT NULL,
+ ParticipatingEducationOrganizationId BIGINT NOT NULL,
+ EducationOrganizationId BIGINT NOT NULL,
+ ElectronicMailAddress VARCHAR(128) NOT NULL,
+ FirstName VARCHAR(75) NOT NULL,
+ LastSurname VARCHAR(75) NOT NULL,
+ LoginId VARCHAR(60) NULL,
+ CreateDate TIMESTAMP NOT NULL,
+ CONSTRAINT AssesssmentAdministrationParticipationAdministrati_c21adc_PK PRIMARY KEY (AdministrationIdentifier, AssessmentIdentifier, AssigningEducationOrganizationId, Namespace, ParticipatingEducationOrganizationId, EducationOrganizationId, ElectronicMailAddress)
+);
+ALTER TABLE edfi.AssesssmentAdministrationParticipationAdministrationPoin_c21adc ALTER COLUMN CreateDate SET DEFAULT current_timestamp AT TIME ZONE 'UTC';
+
-- Table edfi.AssignmentLateStatusDescriptor --
CREATE TABLE edfi.AssignmentLateStatusDescriptor (
AssignmentLateStatusDescriptorId INT NOT NULL,
@@ -4149,6 +4250,12 @@ ALTER TABLE edfi.Section ALTER COLUMN CreateDate SET DEFAULT current_timestamp A
ALTER TABLE edfi.Section ALTER COLUMN Id SET DEFAULT gen_random_uuid();
ALTER TABLE edfi.Section ALTER COLUMN LastModifiedDate SET DEFAULT current_timestamp AT TIME ZONE 'UTC';
+-- Table edfi.Section504DisabilityTypeDescriptor --
+CREATE TABLE edfi.Section504DisabilityTypeDescriptor (
+ Section504DisabilityTypeDescriptorId INT NOT NULL,
+ CONSTRAINT Section504DisabilityTypeDescriptor_PK PRIMARY KEY (Section504DisabilityTypeDescriptorId)
+);
+
-- Table edfi.SectionAttendanceTakenEvent --
CREATE TABLE edfi.SectionAttendanceTakenEvent (
CalendarCode VARCHAR(60) NOT NULL,
@@ -5241,6 +5348,93 @@ CREATE TABLE edfi.StudentAssessmentPeriod (
);
ALTER TABLE edfi.StudentAssessmentPeriod ALTER COLUMN CreateDate SET DEFAULT current_timestamp AT TIME ZONE 'UTC';
+-- Table edfi.StudentAssessmentRegistration --
+CREATE TABLE edfi.StudentAssessmentRegistration (
+ AdministrationIdentifier VARCHAR(255) NOT NULL,
+ AssessmentIdentifier VARCHAR(60) NOT NULL,
+ AssigningEducationOrganizationId BIGINT NOT NULL,
+ EducationOrganizationId BIGINT NOT NULL,
+ Namespace VARCHAR(255) NOT NULL,
+ StudentUSI INT NOT NULL,
+ AssessmentGradeLevelDescriptorId INT NULL,
+ EntryDate DATE NOT NULL,
+ PlatformTypeDescriptorId INT NULL,
+ ReportingEducationOrganizationId BIGINT NULL,
+ SchoolId BIGINT NOT NULL,
+ TestingEducationOrganizationId BIGINT NULL,
+ Discriminator VARCHAR(128) NULL,
+ CreateDate TIMESTAMP NOT NULL,
+ LastModifiedDate TIMESTAMP NOT NULL,
+ Id UUID NOT NULL,
+ CONSTRAINT StudentAssessmentRegistration_PK PRIMARY KEY (AdministrationIdentifier, AssessmentIdentifier, AssigningEducationOrganizationId, EducationOrganizationId, Namespace, StudentUSI)
+);
+ALTER TABLE edfi.StudentAssessmentRegistration ALTER COLUMN CreateDate SET DEFAULT current_timestamp AT TIME ZONE 'UTC';
+ALTER TABLE edfi.StudentAssessmentRegistration ALTER COLUMN Id SET DEFAULT gen_random_uuid();
+ALTER TABLE edfi.StudentAssessmentRegistration ALTER COLUMN LastModifiedDate SET DEFAULT current_timestamp AT TIME ZONE 'UTC';
+
+-- Table edfi.StudentAssessmentRegistrationAssessmentAccommodation --
+CREATE TABLE edfi.StudentAssessmentRegistrationAssessmentAccommodation (
+ AdministrationIdentifier VARCHAR(255) NOT NULL,
+ AssessmentIdentifier VARCHAR(60) NOT NULL,
+ AssigningEducationOrganizationId BIGINT NOT NULL,
+ EducationOrganizationId BIGINT NOT NULL,
+ Namespace VARCHAR(255) NOT NULL,
+ StudentUSI INT NOT NULL,
+ AccommodationDescriptorId INT NOT NULL,
+ CreateDate TIMESTAMP NOT NULL,
+ CONSTRAINT StudentAssessmentRegistrationAssessmentAccommodation_PK PRIMARY KEY (AdministrationIdentifier, AssessmentIdentifier, AssigningEducationOrganizationId, EducationOrganizationId, Namespace, StudentUSI, AccommodationDescriptorId)
+);
+ALTER TABLE edfi.StudentAssessmentRegistrationAssessmentAccommodation ALTER COLUMN CreateDate SET DEFAULT current_timestamp AT TIME ZONE 'UTC';
+
+-- Table edfi.StudentAssessmentRegistrationAssessmentCustomization --
+CREATE TABLE edfi.StudentAssessmentRegistrationAssessmentCustomization (
+ AdministrationIdentifier VARCHAR(255) NOT NULL,
+ AssessmentIdentifier VARCHAR(60) NOT NULL,
+ AssigningEducationOrganizationId BIGINT NOT NULL,
+ EducationOrganizationId BIGINT NOT NULL,
+ Namespace VARCHAR(255) NOT NULL,
+ StudentUSI INT NOT NULL,
+ CustomizationKey VARCHAR(60) NOT NULL,
+ CustomizationValue VARCHAR(1024) NOT NULL,
+ CreateDate TIMESTAMP NOT NULL,
+ CONSTRAINT StudentAssessmentRegistrationAssessmentCustomization_PK PRIMARY KEY (AdministrationIdentifier, AssessmentIdentifier, AssigningEducationOrganizationId, EducationOrganizationId, Namespace, StudentUSI, CustomizationKey)
+);
+ALTER TABLE edfi.StudentAssessmentRegistrationAssessmentCustomization ALTER COLUMN CreateDate SET DEFAULT current_timestamp AT TIME ZONE 'UTC';
+
+-- Table edfi.StudentAssessmentRegistrationBatteryPartAssociation --
+CREATE TABLE edfi.StudentAssessmentRegistrationBatteryPartAssociation (
+ AdministrationIdentifier VARCHAR(255) NOT NULL,
+ AssessmentBatteryPartName VARCHAR(65) NOT NULL,
+ AssessmentIdentifier VARCHAR(60) NOT NULL,
+ AssigningEducationOrganizationId BIGINT NOT NULL,
+ EducationOrganizationId BIGINT NOT NULL,
+ Namespace VARCHAR(255) NOT NULL,
+ StudentUSI INT NOT NULL,
+ Discriminator VARCHAR(128) NULL,
+ CreateDate TIMESTAMP NOT NULL,
+ LastModifiedDate TIMESTAMP NOT NULL,
+ Id UUID NOT NULL,
+ CONSTRAINT StudentAssessmentRegistrationBatteryPartAssociation_PK PRIMARY KEY (AdministrationIdentifier, AssessmentBatteryPartName, AssessmentIdentifier, AssigningEducationOrganizationId, EducationOrganizationId, Namespace, StudentUSI)
+);
+ALTER TABLE edfi.StudentAssessmentRegistrationBatteryPartAssociation ALTER COLUMN CreateDate SET DEFAULT current_timestamp AT TIME ZONE 'UTC';
+ALTER TABLE edfi.StudentAssessmentRegistrationBatteryPartAssociation ALTER COLUMN Id SET DEFAULT gen_random_uuid();
+ALTER TABLE edfi.StudentAssessmentRegistrationBatteryPartAssociation ALTER COLUMN LastModifiedDate SET DEFAULT current_timestamp AT TIME ZONE 'UTC';
+
+-- Table edfi.StudentAssessmentRegistrationBatteryPartAssociationAccom_c87694 --
+CREATE TABLE edfi.StudentAssessmentRegistrationBatteryPartAssociationAccom_c87694 (
+ AdministrationIdentifier VARCHAR(255) NOT NULL,
+ AssessmentBatteryPartName VARCHAR(65) NOT NULL,
+ AssessmentIdentifier VARCHAR(60) NOT NULL,
+ AssigningEducationOrganizationId BIGINT NOT NULL,
+ EducationOrganizationId BIGINT NOT NULL,
+ Namespace VARCHAR(255) NOT NULL,
+ StudentUSI INT NOT NULL,
+ AccommodationDescriptorId INT NOT NULL,
+ CreateDate TIMESTAMP NOT NULL,
+ CONSTRAINT StudentAssessmentRegistrationBatteryPartAssociatio_c87694_PK PRIMARY KEY (AdministrationIdentifier, AssessmentBatteryPartName, AssessmentIdentifier, AssigningEducationOrganizationId, EducationOrganizationId, Namespace, StudentUSI, AccommodationDescriptorId)
+);
+ALTER TABLE edfi.StudentAssessmentRegistrationBatteryPartAssociationAccom_c87694 ALTER COLUMN CreateDate SET DEFAULT current_timestamp AT TIME ZONE 'UTC';
+
-- Table edfi.StudentAssessmentScoreResult --
CREATE TABLE edfi.StudentAssessmentScoreResult (
AssessmentIdentifier VARCHAR(60) NOT NULL,
@@ -5510,6 +5704,30 @@ CREATE TABLE edfi.StudentDisciplineIncidentNonOffenderAssociationDisciplin_4c979
);
ALTER TABLE edfi.StudentDisciplineIncidentNonOffenderAssociationDisciplin_4c979a ALTER COLUMN CreateDate SET DEFAULT current_timestamp AT TIME ZONE 'UTC';
+-- Table edfi.StudentEducationOrganizationAssessmentAccommodation --
+CREATE TABLE edfi.StudentEducationOrganizationAssessmentAccommodation (
+ EducationOrganizationId BIGINT NOT NULL,
+ StudentUSI INT NOT NULL,
+ Discriminator VARCHAR(128) NULL,
+ CreateDate TIMESTAMP NOT NULL,
+ LastModifiedDate TIMESTAMP NOT NULL,
+ Id UUID NOT NULL,
+ CONSTRAINT StudentEducationOrganizationAssessmentAccommodation_PK PRIMARY KEY (EducationOrganizationId, StudentUSI)
+);
+ALTER TABLE edfi.StudentEducationOrganizationAssessmentAccommodation ALTER COLUMN CreateDate SET DEFAULT current_timestamp AT TIME ZONE 'UTC';
+ALTER TABLE edfi.StudentEducationOrganizationAssessmentAccommodation ALTER COLUMN Id SET DEFAULT gen_random_uuid();
+ALTER TABLE edfi.StudentEducationOrganizationAssessmentAccommodation ALTER COLUMN LastModifiedDate SET DEFAULT current_timestamp AT TIME ZONE 'UTC';
+
+-- Table edfi.StudentEducationOrganizationAssessmentAccommodationGener_d1d10a --
+CREATE TABLE edfi.StudentEducationOrganizationAssessmentAccommodationGener_d1d10a (
+ EducationOrganizationId BIGINT NOT NULL,
+ StudentUSI INT NOT NULL,
+ AccommodationDescriptorId INT NOT NULL,
+ CreateDate TIMESTAMP NOT NULL,
+ CONSTRAINT StudentEducationOrganizationAssessmentAccommodatio_d1d10a_PK PRIMARY KEY (EducationOrganizationId, StudentUSI, AccommodationDescriptorId)
+);
+ALTER TABLE edfi.StudentEducationOrganizationAssessmentAccommodationGener_d1d10a ALTER COLUMN CreateDate SET DEFAULT current_timestamp AT TIME ZONE 'UTC';
+
-- Table edfi.StudentEducationOrganizationAssociation --
CREATE TABLE edfi.StudentEducationOrganizationAssociation (
EducationOrganizationId BIGINT NOT NULL,
@@ -6382,6 +6600,22 @@ CREATE TABLE edfi.StudentSchoolFoodServiceProgramAssociationSchoolFoodServ_85a0e
);
ALTER TABLE edfi.StudentSchoolFoodServiceProgramAssociationSchoolFoodServ_85a0eb ALTER COLUMN CreateDate SET DEFAULT current_timestamp AT TIME ZONE 'UTC';
+-- Table edfi.StudentSection504ProgramAssociation --
+CREATE TABLE edfi.StudentSection504ProgramAssociation (
+ BeginDate DATE NOT NULL,
+ EducationOrganizationId BIGINT NOT NULL,
+ ProgramEducationOrganizationId BIGINT NOT NULL,
+ ProgramName VARCHAR(60) NOT NULL,
+ ProgramTypeDescriptorId INT NOT NULL,
+ StudentUSI INT NOT NULL,
+ AccommodationPlan BOOLEAN NULL,
+ Section504DisabilityTypeDescriptorId INT NULL,
+ Section504Eligibility BOOLEAN NOT NULL,
+ Section504EligibilityDecisionDate DATE NULL,
+ Section504MeetingDate DATE NULL,
+ CONSTRAINT StudentSection504ProgramAssociation_PK PRIMARY KEY (BeginDate, EducationOrganizationId, ProgramEducationOrganizationId, ProgramName, ProgramTypeDescriptorId, StudentUSI)
+);
+
-- Table edfi.StudentSectionAssociation --
CREATE TABLE edfi.StudentSectionAssociation (
BeginDate DATE NOT NULL,
@@ -6573,6 +6807,7 @@ ALTER TABLE edfi.StudentSpecialEducationProgramAssociationSpecialEducatio_bcba5c
CREATE TABLE edfi.StudentSpecialEducationProgramEligibilityAssociation (
ConsentToEvaluationReceivedDate DATE NOT NULL,
EducationOrganizationId BIGINT NOT NULL,
+ ProgramEducationOrganizationId BIGINT NOT NULL,
ProgramName VARCHAR(60) NOT NULL,
ProgramTypeDescriptorId INT NOT NULL,
StudentUSI INT NOT NULL,
@@ -6595,7 +6830,7 @@ CREATE TABLE edfi.StudentSpecialEducationProgramEligibilityAssociation (
CreateDate TIMESTAMP NOT NULL,
LastModifiedDate TIMESTAMP NOT NULL,
Id UUID NOT NULL,
- CONSTRAINT StudentSpecialEducationProgramEligibilityAssociation_PK PRIMARY KEY (ConsentToEvaluationReceivedDate, EducationOrganizationId, ProgramName, ProgramTypeDescriptorId, StudentUSI)
+ CONSTRAINT StudentSpecialEducationProgramEligibilityAssociation_PK PRIMARY KEY (ConsentToEvaluationReceivedDate, EducationOrganizationId, ProgramEducationOrganizationId, ProgramName, ProgramTypeDescriptorId, StudentUSI)
);
ALTER TABLE edfi.StudentSpecialEducationProgramEligibilityAssociation ALTER COLUMN CreateDate SET DEFAULT current_timestamp AT TIME ZONE 'UTC';
ALTER TABLE edfi.StudentSpecialEducationProgramEligibilityAssociation ALTER COLUMN Id SET DEFAULT gen_random_uuid();
diff --git a/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/PgSql/Structure/Ods/0030-ForeignKeys.sql b/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/PgSql/Structure/Ods/0030-ForeignKeys.sql
index 3021bab4c7..1645ba785a 100644
--- a/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/PgSql/Structure/Ods/0030-ForeignKeys.sql
+++ b/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/PgSql/Structure/Ods/0030-ForeignKeys.sql
@@ -96,6 +96,37 @@ REFERENCES edfi.Assessment (AssessmentIdentifier, Namespace)
ON DELETE CASCADE
;
+ALTER TABLE edfi.AssessmentAdministration ADD CONSTRAINT FK_c64558_Assessment FOREIGN KEY (AssessmentIdentifier, Namespace)
+REFERENCES edfi.Assessment (AssessmentIdentifier, Namespace)
+;
+
+CREATE INDEX FK_c64558_Assessment
+ON edfi.AssessmentAdministration (AssessmentIdentifier ASC, Namespace ASC);
+
+ALTER TABLE edfi.AssessmentAdministration ADD CONSTRAINT FK_c64558_EducationOrganization FOREIGN KEY (AssigningEducationOrganizationId)
+REFERENCES edfi.EducationOrganization (EducationOrganizationId)
+;
+
+CREATE INDEX FK_c64558_EducationOrganization
+ON edfi.AssessmentAdministration (AssigningEducationOrganizationId ASC);
+
+ALTER TABLE edfi.AssessmentAdministrationAssessmentAdminstrationPeriod ADD CONSTRAINT FK_77cf17_AssessmentAdministration FOREIGN KEY (AdministrationIdentifier, AssessmentIdentifier, AssigningEducationOrganizationId, Namespace)
+REFERENCES edfi.AssessmentAdministration (AdministrationIdentifier, AssessmentIdentifier, AssigningEducationOrganizationId, Namespace)
+ON DELETE CASCADE
+;
+
+ALTER TABLE edfi.AssessmentAdministrationAssessmentBatteryPart ADD CONSTRAINT FK_1d6852_AssessmentAdministration FOREIGN KEY (AdministrationIdentifier, AssessmentIdentifier, AssigningEducationOrganizationId, Namespace)
+REFERENCES edfi.AssessmentAdministration (AdministrationIdentifier, AssessmentIdentifier, AssigningEducationOrganizationId, Namespace)
+ON DELETE CASCADE
+;
+
+ALTER TABLE edfi.AssessmentAdministrationAssessmentBatteryPart ADD CONSTRAINT FK_1d6852_AssessmentBatteryPart FOREIGN KEY (AssessmentBatteryPartName, AssessmentIdentifier, Namespace)
+REFERENCES edfi.AssessmentBatteryPart (AssessmentBatteryPartName, AssessmentIdentifier, Namespace)
+;
+
+CREATE INDEX FK_1d6852_AssessmentBatteryPart
+ON edfi.AssessmentAdministrationAssessmentBatteryPart (AssessmentBatteryPartName ASC, AssessmentIdentifier ASC, Namespace ASC);
+
ALTER TABLE edfi.AssessmentAssessedGradeLevel ADD CONSTRAINT FK_e83625_Assessment FOREIGN KEY (AssessmentIdentifier, Namespace)
REFERENCES edfi.Assessment (AssessmentIdentifier, Namespace)
ON DELETE CASCADE
@@ -108,6 +139,25 @@ REFERENCES edfi.GradeLevelDescriptor (GradeLevelDescriptorId)
CREATE INDEX FK_e83625_GradeLevelDescriptor
ON edfi.AssessmentAssessedGradeLevel (GradeLevelDescriptorId ASC);
+ALTER TABLE edfi.AssessmentBatteryPart ADD CONSTRAINT FK_6e22f2_Assessment FOREIGN KEY (AssessmentIdentifier, Namespace)
+REFERENCES edfi.Assessment (AssessmentIdentifier, Namespace)
+;
+
+CREATE INDEX FK_6e22f2_Assessment
+ON edfi.AssessmentBatteryPart (AssessmentIdentifier ASC, Namespace ASC);
+
+ALTER TABLE edfi.AssessmentBatteryPartObjectiveAssessment ADD CONSTRAINT FK_8ab121_AssessmentBatteryPart FOREIGN KEY (AssessmentBatteryPartName, AssessmentIdentifier, Namespace)
+REFERENCES edfi.AssessmentBatteryPart (AssessmentBatteryPartName, AssessmentIdentifier, Namespace)
+ON DELETE CASCADE
+;
+
+ALTER TABLE edfi.AssessmentBatteryPartObjectiveAssessment ADD CONSTRAINT FK_8ab121_ObjectiveAssessment FOREIGN KEY (AssessmentIdentifier, IdentificationCode, Namespace)
+REFERENCES edfi.ObjectiveAssessment (AssessmentIdentifier, IdentificationCode, Namespace)
+;
+
+CREATE INDEX FK_8ab121_ObjectiveAssessment
+ON edfi.AssessmentBatteryPartObjectiveAssessment (AssessmentIdentifier ASC, IdentificationCode ASC, Namespace ASC);
+
ALTER TABLE edfi.AssessmentCategoryDescriptor ADD CONSTRAINT FK_20e875_Descriptor FOREIGN KEY (AssessmentCategoryDescriptorId)
REFERENCES edfi.Descriptor (DescriptorId)
ON DELETE CASCADE
@@ -344,6 +394,32 @@ ON UPDATE CASCADE
CREATE INDEX FK_22ceba_Section
ON edfi.AssessmentSection (LocalCourseCode ASC, SchoolId ASC, SchoolYear ASC, SectionIdentifier ASC, SessionName ASC);
+ALTER TABLE edfi.AssesssmentAdministrationParticipation ADD CONSTRAINT FK_0b52ab_AssessmentAdministration FOREIGN KEY (AdministrationIdentifier, AssessmentIdentifier, AssigningEducationOrganizationId, Namespace)
+REFERENCES edfi.AssessmentAdministration (AdministrationIdentifier, AssessmentIdentifier, AssigningEducationOrganizationId, Namespace)
+;
+
+CREATE INDEX FK_0b52ab_AssessmentAdministration
+ON edfi.AssesssmentAdministrationParticipation (AdministrationIdentifier ASC, AssessmentIdentifier ASC, AssigningEducationOrganizationId ASC, Namespace ASC);
+
+ALTER TABLE edfi.AssesssmentAdministrationParticipation ADD CONSTRAINT FK_0b52ab_EducationOrganization FOREIGN KEY (ParticipatingEducationOrganizationId)
+REFERENCES edfi.EducationOrganization (EducationOrganizationId)
+;
+
+CREATE INDEX FK_0b52ab_EducationOrganization
+ON edfi.AssesssmentAdministrationParticipation (ParticipatingEducationOrganizationId ASC);
+
+ALTER TABLE edfi.AssesssmentAdministrationParticipationAdministrationPoin_c21adc ADD CONSTRAINT FK_c21adc_AssesssmentAdministrationParticipation FOREIGN KEY (AdministrationIdentifier, AssessmentIdentifier, AssigningEducationOrganizationId, Namespace, ParticipatingEducationOrganizationId)
+REFERENCES edfi.AssesssmentAdministrationParticipation (AdministrationIdentifier, AssessmentIdentifier, AssigningEducationOrganizationId, Namespace, ParticipatingEducationOrganizationId)
+ON DELETE CASCADE
+;
+
+ALTER TABLE edfi.AssesssmentAdministrationParticipationAdministrationPoin_c21adc ADD CONSTRAINT FK_c21adc_EducationOrganization FOREIGN KEY (EducationOrganizationId)
+REFERENCES edfi.EducationOrganization (EducationOrganizationId)
+;
+
+CREATE INDEX FK_c21adc_EducationOrganization
+ON edfi.AssesssmentAdministrationParticipationAdministrationPoin_c21adc (EducationOrganizationId ASC);
+
ALTER TABLE edfi.AssignmentLateStatusDescriptor ADD CONSTRAINT FK_518b3c_Descriptor FOREIGN KEY (AssignmentLateStatusDescriptorId)
REFERENCES edfi.Descriptor (DescriptorId)
ON DELETE CASCADE
@@ -3970,6 +4046,11 @@ REFERENCES edfi.SectionTypeDescriptor (SectionTypeDescriptorId)
CREATE INDEX FK_dfca5d_SectionTypeDescriptor
ON edfi.Section (SectionTypeDescriptorId ASC);
+ALTER TABLE edfi.Section504DisabilityTypeDescriptor ADD CONSTRAINT FK_e7f766_Descriptor FOREIGN KEY (Section504DisabilityTypeDescriptorId)
+REFERENCES edfi.Descriptor (DescriptorId)
+ON DELETE CASCADE
+;
+
ALTER TABLE edfi.SectionAttendanceTakenEvent ADD CONSTRAINT FK_7bbbe7_CalendarDate FOREIGN KEY (CalendarCode, Date, SchoolId, SchoolYear)
REFERENCES edfi.CalendarDate (CalendarCode, Date, SchoolId, SchoolYear)
;
@@ -5131,6 +5212,106 @@ REFERENCES edfi.StudentAssessment (AssessmentIdentifier, Namespace, StudentAsses
ON DELETE CASCADE
;
+ALTER TABLE edfi.StudentAssessmentRegistration ADD CONSTRAINT FK_79fd6b_AssessmentAdministration FOREIGN KEY (AdministrationIdentifier, AssessmentIdentifier, AssigningEducationOrganizationId, Namespace)
+REFERENCES edfi.AssessmentAdministration (AdministrationIdentifier, AssessmentIdentifier, AssigningEducationOrganizationId, Namespace)
+;
+
+CREATE INDEX FK_79fd6b_AssessmentAdministration
+ON edfi.StudentAssessmentRegistration (AdministrationIdentifier ASC, AssessmentIdentifier ASC, AssigningEducationOrganizationId ASC, Namespace ASC);
+
+ALTER TABLE edfi.StudentAssessmentRegistration ADD CONSTRAINT FK_79fd6b_EducationOrganization FOREIGN KEY (ReportingEducationOrganizationId)
+REFERENCES edfi.EducationOrganization (EducationOrganizationId)
+;
+
+CREATE INDEX FK_79fd6b_EducationOrganization
+ON edfi.StudentAssessmentRegistration (ReportingEducationOrganizationId ASC);
+
+ALTER TABLE edfi.StudentAssessmentRegistration ADD CONSTRAINT FK_79fd6b_EducationOrganization1 FOREIGN KEY (TestingEducationOrganizationId)
+REFERENCES edfi.EducationOrganization (EducationOrganizationId)
+;
+
+CREATE INDEX FK_79fd6b_EducationOrganization1
+ON edfi.StudentAssessmentRegistration (TestingEducationOrganizationId ASC);
+
+ALTER TABLE edfi.StudentAssessmentRegistration ADD CONSTRAINT FK_79fd6b_GradeLevelDescriptor FOREIGN KEY (AssessmentGradeLevelDescriptorId)
+REFERENCES edfi.GradeLevelDescriptor (GradeLevelDescriptorId)
+;
+
+CREATE INDEX FK_79fd6b_GradeLevelDescriptor
+ON edfi.StudentAssessmentRegistration (AssessmentGradeLevelDescriptorId ASC);
+
+ALTER TABLE edfi.StudentAssessmentRegistration ADD CONSTRAINT FK_79fd6b_PlatformTypeDescriptor FOREIGN KEY (PlatformTypeDescriptorId)
+REFERENCES edfi.PlatformTypeDescriptor (PlatformTypeDescriptorId)
+;
+
+CREATE INDEX FK_79fd6b_PlatformTypeDescriptor
+ON edfi.StudentAssessmentRegistration (PlatformTypeDescriptorId ASC);
+
+ALTER TABLE edfi.StudentAssessmentRegistration ADD CONSTRAINT FK_79fd6b_StudentEducationOrganizationAssessmentAccommodation FOREIGN KEY (EducationOrganizationId, StudentUSI)
+REFERENCES edfi.StudentEducationOrganizationAssessmentAccommodation (EducationOrganizationId, StudentUSI)
+;
+
+CREATE INDEX FK_79fd6b_StudentEducationOrganizationAssessmentAccommodation
+ON edfi.StudentAssessmentRegistration (EducationOrganizationId ASC, StudentUSI ASC);
+
+ALTER TABLE edfi.StudentAssessmentRegistration ADD CONSTRAINT FK_79fd6b_StudentEducationOrganizationAssociation FOREIGN KEY (EducationOrganizationId, StudentUSI)
+REFERENCES edfi.StudentEducationOrganizationAssociation (EducationOrganizationId, StudentUSI)
+;
+
+CREATE INDEX FK_79fd6b_StudentEducationOrganizationAssociation
+ON edfi.StudentAssessmentRegistration (EducationOrganizationId ASC, StudentUSI ASC);
+
+ALTER TABLE edfi.StudentAssessmentRegistration ADD CONSTRAINT FK_79fd6b_StudentSchoolAssociation FOREIGN KEY (EntryDate, SchoolId, StudentUSI)
+REFERENCES edfi.StudentSchoolAssociation (EntryDate, SchoolId, StudentUSI)
+ON UPDATE CASCADE
+;
+
+CREATE INDEX FK_79fd6b_StudentSchoolAssociation
+ON edfi.StudentAssessmentRegistration (EntryDate ASC, SchoolId ASC, StudentUSI ASC);
+
+ALTER TABLE edfi.StudentAssessmentRegistrationAssessmentAccommodation ADD CONSTRAINT FK_8f1b98_AccommodationDescriptor FOREIGN KEY (AccommodationDescriptorId)
+REFERENCES edfi.AccommodationDescriptor (AccommodationDescriptorId)
+;
+
+CREATE INDEX FK_8f1b98_AccommodationDescriptor
+ON edfi.StudentAssessmentRegistrationAssessmentAccommodation (AccommodationDescriptorId ASC);
+
+ALTER TABLE edfi.StudentAssessmentRegistrationAssessmentAccommodation ADD CONSTRAINT FK_8f1b98_StudentAssessmentRegistration FOREIGN KEY (AdministrationIdentifier, AssessmentIdentifier, AssigningEducationOrganizationId, EducationOrganizationId, Namespace, StudentUSI)
+REFERENCES edfi.StudentAssessmentRegistration (AdministrationIdentifier, AssessmentIdentifier, AssigningEducationOrganizationId, EducationOrganizationId, Namespace, StudentUSI)
+ON DELETE CASCADE
+;
+
+ALTER TABLE edfi.StudentAssessmentRegistrationAssessmentCustomization ADD CONSTRAINT FK_869535_StudentAssessmentRegistration FOREIGN KEY (AdministrationIdentifier, AssessmentIdentifier, AssigningEducationOrganizationId, EducationOrganizationId, Namespace, StudentUSI)
+REFERENCES edfi.StudentAssessmentRegistration (AdministrationIdentifier, AssessmentIdentifier, AssigningEducationOrganizationId, EducationOrganizationId, Namespace, StudentUSI)
+ON DELETE CASCADE
+;
+
+ALTER TABLE edfi.StudentAssessmentRegistrationBatteryPartAssociation ADD CONSTRAINT FK_3bb369_AssessmentBatteryPart FOREIGN KEY (AssessmentBatteryPartName, AssessmentIdentifier, Namespace)
+REFERENCES edfi.AssessmentBatteryPart (AssessmentBatteryPartName, AssessmentIdentifier, Namespace)
+;
+
+CREATE INDEX FK_3bb369_AssessmentBatteryPart
+ON edfi.StudentAssessmentRegistrationBatteryPartAssociation (AssessmentBatteryPartName ASC, AssessmentIdentifier ASC, Namespace ASC);
+
+ALTER TABLE edfi.StudentAssessmentRegistrationBatteryPartAssociation ADD CONSTRAINT FK_3bb369_StudentAssessmentRegistration FOREIGN KEY (AdministrationIdentifier, AssessmentIdentifier, AssigningEducationOrganizationId, EducationOrganizationId, Namespace, StudentUSI)
+REFERENCES edfi.StudentAssessmentRegistration (AdministrationIdentifier, AssessmentIdentifier, AssigningEducationOrganizationId, EducationOrganizationId, Namespace, StudentUSI)
+;
+
+CREATE INDEX FK_3bb369_StudentAssessmentRegistration
+ON edfi.StudentAssessmentRegistrationBatteryPartAssociation (AdministrationIdentifier ASC, AssessmentIdentifier ASC, AssigningEducationOrganizationId ASC, EducationOrganizationId ASC, Namespace ASC, StudentUSI ASC);
+
+ALTER TABLE edfi.StudentAssessmentRegistrationBatteryPartAssociationAccom_c87694 ADD CONSTRAINT FK_c87694_AccommodationDescriptor FOREIGN KEY (AccommodationDescriptorId)
+REFERENCES edfi.AccommodationDescriptor (AccommodationDescriptorId)
+;
+
+CREATE INDEX FK_c87694_AccommodationDescriptor
+ON edfi.StudentAssessmentRegistrationBatteryPartAssociationAccom_c87694 (AccommodationDescriptorId ASC);
+
+ALTER TABLE edfi.StudentAssessmentRegistrationBatteryPartAssociationAccom_c87694 ADD CONSTRAINT FK_c87694_StudentAssessmentRegistrationBatteryPartAssociation FOREIGN KEY (AdministrationIdentifier, AssessmentBatteryPartName, AssessmentIdentifier, AssigningEducationOrganizationId, EducationOrganizationId, Namespace, StudentUSI)
+REFERENCES edfi.StudentAssessmentRegistrationBatteryPartAssociation (AdministrationIdentifier, AssessmentBatteryPartName, AssessmentIdentifier, AssigningEducationOrganizationId, EducationOrganizationId, Namespace, StudentUSI)
+ON DELETE CASCADE
+;
+
ALTER TABLE edfi.StudentAssessmentScoreResult ADD CONSTRAINT FK_0fceba_AssessmentReportingMethodDescriptor FOREIGN KEY (AssessmentReportingMethodDescriptorId)
REFERENCES edfi.AssessmentReportingMethodDescriptor (AssessmentReportingMethodDescriptorId)
;
@@ -5389,6 +5570,29 @@ REFERENCES edfi.StudentDisciplineIncidentNonOffenderAssociation (IncidentIdentif
ON DELETE CASCADE
;
+ALTER TABLE edfi.StudentEducationOrganizationAssessmentAccommodation ADD CONSTRAINT FK_5f4481_EducationOrganization FOREIGN KEY (EducationOrganizationId)
+REFERENCES edfi.EducationOrganization (EducationOrganizationId)
+;
+
+ALTER TABLE edfi.StudentEducationOrganizationAssessmentAccommodation ADD CONSTRAINT FK_5f4481_Student FOREIGN KEY (StudentUSI)
+REFERENCES edfi.Student (StudentUSI)
+;
+
+CREATE INDEX FK_5f4481_Student
+ON edfi.StudentEducationOrganizationAssessmentAccommodation (StudentUSI ASC);
+
+ALTER TABLE edfi.StudentEducationOrganizationAssessmentAccommodationGener_d1d10a ADD CONSTRAINT FK_d1d10a_AccommodationDescriptor FOREIGN KEY (AccommodationDescriptorId)
+REFERENCES edfi.AccommodationDescriptor (AccommodationDescriptorId)
+;
+
+CREATE INDEX FK_d1d10a_AccommodationDescriptor
+ON edfi.StudentEducationOrganizationAssessmentAccommodationGener_d1d10a (AccommodationDescriptorId ASC);
+
+ALTER TABLE edfi.StudentEducationOrganizationAssessmentAccommodationGener_d1d10a ADD CONSTRAINT FK_d1d10a_StudentEducationOrganizationAssessmentAccommodation FOREIGN KEY (EducationOrganizationId, StudentUSI)
+REFERENCES edfi.StudentEducationOrganizationAssessmentAccommodation (EducationOrganizationId, StudentUSI)
+ON DELETE CASCADE
+;
+
ALTER TABLE edfi.StudentEducationOrganizationAssociation ADD CONSTRAINT FK_8e1257_BarrierToInternetAccessInResidenceDescriptor FOREIGN KEY (BarrierToInternetAccessInResidenceDescriptorId)
REFERENCES edfi.BarrierToInternetAccessInResidenceDescriptor (BarrierToInternetAccessInResidenceDescriptorId)
;
@@ -6407,6 +6611,18 @@ REFERENCES edfi.StudentSchoolFoodServiceProgramAssociation (BeginDate, Education
ON DELETE CASCADE
;
+ALTER TABLE edfi.StudentSection504ProgramAssociation ADD CONSTRAINT FK_6e41ee_GeneralStudentProgramAssociation FOREIGN KEY (BeginDate, EducationOrganizationId, ProgramEducationOrganizationId, ProgramName, ProgramTypeDescriptorId, StudentUSI)
+REFERENCES edfi.GeneralStudentProgramAssociation (BeginDate, EducationOrganizationId, ProgramEducationOrganizationId, ProgramName, ProgramTypeDescriptorId, StudentUSI)
+ON DELETE CASCADE
+;
+
+ALTER TABLE edfi.StudentSection504ProgramAssociation ADD CONSTRAINT FK_6e41ee_Section504DisabilityTypeDescriptor FOREIGN KEY (Section504DisabilityTypeDescriptorId)
+REFERENCES edfi.Section504DisabilityTypeDescriptor (Section504DisabilityTypeDescriptorId)
+;
+
+CREATE INDEX FK_6e41ee_Section504DisabilityTypeDescriptor
+ON edfi.StudentSection504ProgramAssociation (Section504DisabilityTypeDescriptorId ASC);
+
ALTER TABLE edfi.StudentSectionAssociation ADD CONSTRAINT FK_39aa3c_AttemptStatusDescriptor FOREIGN KEY (AttemptStatusDescriptorId)
REFERENCES edfi.AttemptStatusDescriptor (AttemptStatusDescriptorId)
;
@@ -6610,12 +6826,12 @@ REFERENCES edfi.IDEAPartDescriptor (IDEAPartDescriptorId)
CREATE INDEX FK_fcb699_IDEAPartDescriptor
ON edfi.StudentSpecialEducationProgramEligibilityAssociation (IDEAPartDescriptorId ASC);
-ALTER TABLE edfi.StudentSpecialEducationProgramEligibilityAssociation ADD CONSTRAINT FK_fcb699_Program FOREIGN KEY (EducationOrganizationId, ProgramName, ProgramTypeDescriptorId)
+ALTER TABLE edfi.StudentSpecialEducationProgramEligibilityAssociation ADD CONSTRAINT FK_fcb699_Program FOREIGN KEY (ProgramEducationOrganizationId, ProgramName, ProgramTypeDescriptorId)
REFERENCES edfi.Program (EducationOrganizationId, ProgramName, ProgramTypeDescriptorId)
;
CREATE INDEX FK_fcb699_Program
-ON edfi.StudentSpecialEducationProgramEligibilityAssociation (EducationOrganizationId ASC, ProgramName ASC, ProgramTypeDescriptorId ASC);
+ON edfi.StudentSpecialEducationProgramEligibilityAssociation (ProgramEducationOrganizationId ASC, ProgramName ASC, ProgramTypeDescriptorId ASC);
ALTER TABLE edfi.StudentSpecialEducationProgramEligibilityAssociation ADD CONSTRAINT FK_fcb699_Student FOREIGN KEY (StudentUSI)
REFERENCES edfi.Student (StudentUSI)
diff --git a/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/PgSql/Structure/Ods/0040-IdColumnUniqueIndexes.sql b/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/PgSql/Structure/Ods/0040-IdColumnUniqueIndexes.sql
index dabaccb56f..14b679170e 100644
--- a/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/PgSql/Structure/Ods/0040-IdColumnUniqueIndexes.sql
+++ b/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/PgSql/Structure/Ods/0040-IdColumnUniqueIndexes.sql
@@ -9,10 +9,16 @@ CREATE UNIQUE INDEX IF NOT EXISTS UX_2d3c0c_Id ON edfi.AccountabilityRating(Id);
CREATE UNIQUE INDEX IF NOT EXISTS UX_7808ee_Id ON edfi.Assessment(Id);
+CREATE UNIQUE INDEX IF NOT EXISTS UX_c64558_Id ON edfi.AssessmentAdministration(Id);
+
+CREATE UNIQUE INDEX IF NOT EXISTS UX_6e22f2_Id ON edfi.AssessmentBatteryPart(Id);
+
CREATE UNIQUE INDEX IF NOT EXISTS UX_dc3dcf_Id ON edfi.AssessmentItem(Id);
CREATE UNIQUE INDEX IF NOT EXISTS UX_a20588_Id ON edfi.AssessmentScoreRangeLearningStandard(Id);
+CREATE UNIQUE INDEX IF NOT EXISTS UX_0b52ab_Id ON edfi.AssesssmentAdministrationParticipation(Id);
+
CREATE UNIQUE INDEX IF NOT EXISTS UX_e52c9c_Id ON edfi.BalanceSheetDimension(Id);
CREATE UNIQUE INDEX IF NOT EXISTS UX_9bbaf5_Id ON edfi.BellSchedule(Id);
@@ -171,6 +177,10 @@ CREATE UNIQUE INDEX IF NOT EXISTS UX_ee3b2a_Id ON edfi.StudentAssessment(Id);
CREATE UNIQUE INDEX IF NOT EXISTS UX_afb8b8_Id ON edfi.StudentAssessmentEducationOrganizationAssociation(Id);
+CREATE UNIQUE INDEX IF NOT EXISTS UX_79fd6b_Id ON edfi.StudentAssessmentRegistration(Id);
+
+CREATE UNIQUE INDEX IF NOT EXISTS UX_3bb369_Id ON edfi.StudentAssessmentRegistrationBatteryPartAssociation(Id);
+
CREATE UNIQUE INDEX IF NOT EXISTS UX_369ddc_Id ON edfi.StudentCohortAssociation(Id);
CREATE UNIQUE INDEX IF NOT EXISTS UX_395c07_Id ON edfi.StudentCompetencyObjective(Id);
@@ -181,6 +191,8 @@ CREATE UNIQUE INDEX IF NOT EXISTS UX_f4934f_Id ON edfi.StudentDisciplineIncident
CREATE UNIQUE INDEX IF NOT EXISTS UX_4b43da_Id ON edfi.StudentDisciplineIncidentNonOffenderAssociation(Id);
+CREATE UNIQUE INDEX IF NOT EXISTS UX_5f4481_Id ON edfi.StudentEducationOrganizationAssessmentAccommodation(Id);
+
CREATE UNIQUE INDEX IF NOT EXISTS UX_8e1257_Id ON edfi.StudentEducationOrganizationAssociation(Id);
CREATE UNIQUE INDEX IF NOT EXISTS UX_42aa64_Id ON edfi.StudentEducationOrganizationResponsibilityAssociation(Id);
diff --git a/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/PgSql/Structure/Ods/0050-ExtendedProperties.sql b/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/PgSql/Structure/Ods/0050-ExtendedProperties.sql
index e6904b43ea..8a8c9a70f7 100644
--- a/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/PgSql/Structure/Ods/0050-ExtendedProperties.sql
+++ b/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/PgSql/Structure/Ods/0050-ExtendedProperties.sql
@@ -86,12 +86,49 @@ COMMENT ON COLUMN edfi.AssessmentAcademicSubject.AssessmentIdentifier IS 'A uniq
COMMENT ON COLUMN edfi.AssessmentAcademicSubject.Namespace IS 'Namespace for the assessment.';
COMMENT ON COLUMN edfi.AssessmentAcademicSubject.AcademicSubjectDescriptorId IS 'The description of the content or subject area (e.g., arts, mathematics, reading, stenography, or a foreign language) of an assessment.';
+-- Extended Properties [edfi].[AssessmentAdministration] --
+COMMENT ON TABLE edfi.AssessmentAdministration IS 'The anticipated administration of an assessment under the purview of an education organization.';
+COMMENT ON COLUMN edfi.AssessmentAdministration.AdministrationIdentifier IS 'The title or name of the assessment in the context of its administration.';
+COMMENT ON COLUMN edfi.AssessmentAdministration.AssessmentIdentifier IS 'A unique number or alphanumeric code assigned to an assessment.';
+COMMENT ON COLUMN edfi.AssessmentAdministration.AssigningEducationOrganizationId IS 'The identifier assigned to an education organization.';
+COMMENT ON COLUMN edfi.AssessmentAdministration.Namespace IS 'Namespace for the assessment.';
+
+-- Extended Properties [edfi].[AssessmentAdministrationAssessmentAdminstrationPeriod] --
+COMMENT ON TABLE edfi.AssessmentAdministrationAssessmentAdminstrationPeriod IS 'The anticipated dates for the assessment or administration window.';
+COMMENT ON COLUMN edfi.AssessmentAdministrationAssessmentAdminstrationPeriod.AdministrationIdentifier IS 'The title or name of the assessment in the context of its administration.';
+COMMENT ON COLUMN edfi.AssessmentAdministrationAssessmentAdminstrationPeriod.AssessmentIdentifier IS 'A unique number or alphanumeric code assigned to an assessment.';
+COMMENT ON COLUMN edfi.AssessmentAdministrationAssessmentAdminstrationPeriod.AssigningEducationOrganizationId IS 'The identifier assigned to an education organization.';
+COMMENT ON COLUMN edfi.AssessmentAdministrationAssessmentAdminstrationPeriod.Namespace IS 'Namespace for the assessment.';
+COMMENT ON COLUMN edfi.AssessmentAdministrationAssessmentAdminstrationPeriod.BeginDate IS 'The month, day, and year for the start of the period. Note: Date interpretation may vary. Ed-Fi recommends inclusive dates, but states may define dates as inclusive or exclusive. For calculations, align with local guidelines.';
+COMMENT ON COLUMN edfi.AssessmentAdministrationAssessmentAdminstrationPeriod.EndDate IS 'The month, day, and year for the end of the period. Note: Date interpretation may vary. Ed-Fi recommends inclusive dates, but states may define dates as inclusive or exclusive. For calculations, align with local guidelines.';
+
+-- Extended Properties [edfi].[AssessmentAdministrationAssessmentBatteryPart] --
+COMMENT ON TABLE edfi.AssessmentAdministrationAssessmentBatteryPart IS 'A reference to the parts of the assessment battery that are offered in this administration of the assessment.';
+COMMENT ON COLUMN edfi.AssessmentAdministrationAssessmentBatteryPart.AdministrationIdentifier IS 'The title or name of the assessment in the context of its administration.';
+COMMENT ON COLUMN edfi.AssessmentAdministrationAssessmentBatteryPart.AssessmentIdentifier IS 'A unique number or alphanumeric code assigned to an assessment.';
+COMMENT ON COLUMN edfi.AssessmentAdministrationAssessmentBatteryPart.AssigningEducationOrganizationId IS 'The identifier assigned to an education organization.';
+COMMENT ON COLUMN edfi.AssessmentAdministrationAssessmentBatteryPart.Namespace IS 'Namespace for the assessment.';
+COMMENT ON COLUMN edfi.AssessmentAdministrationAssessmentBatteryPart.AssessmentBatteryPartName IS 'The name of the part of an assessment battery.';
+
-- Extended Properties [edfi].[AssessmentAssessedGradeLevel] --
COMMENT ON TABLE edfi.AssessmentAssessedGradeLevel IS 'The grade level(s) for which an assessment is designed. The semantics of null is assumed to mean that the assessment is not associated with any grade level.';
COMMENT ON COLUMN edfi.AssessmentAssessedGradeLevel.AssessmentIdentifier IS 'A unique number or alphanumeric code assigned to an assessment.';
COMMENT ON COLUMN edfi.AssessmentAssessedGradeLevel.Namespace IS 'Namespace for the assessment.';
COMMENT ON COLUMN edfi.AssessmentAssessedGradeLevel.GradeLevelDescriptorId IS 'The grade level(s) for which an assessment is designed. The semantics of null is assumed to mean that the assessment is not associated with any grade level.';
+-- Extended Properties [edfi].[AssessmentBatteryPart] --
+COMMENT ON TABLE edfi.AssessmentBatteryPart IS 'The parts organized for administering an assessessment which together provide a comprehensive assessment of the students.';
+COMMENT ON COLUMN edfi.AssessmentBatteryPart.AssessmentBatteryPartName IS 'The name of the part of an assessment battery.';
+COMMENT ON COLUMN edfi.AssessmentBatteryPart.AssessmentIdentifier IS 'A unique number or alphanumeric code assigned to an assessment.';
+COMMENT ON COLUMN edfi.AssessmentBatteryPart.Namespace IS 'Namespace for the assessment.';
+
+-- Extended Properties [edfi].[AssessmentBatteryPartObjectiveAssessment] --
+COMMENT ON TABLE edfi.AssessmentBatteryPartObjectiveAssessment IS 'A reference to the objective assessment(s) that are administered by the assessment battery part.';
+COMMENT ON COLUMN edfi.AssessmentBatteryPartObjectiveAssessment.AssessmentBatteryPartName IS 'The name of the part of an assessment battery.';
+COMMENT ON COLUMN edfi.AssessmentBatteryPartObjectiveAssessment.AssessmentIdentifier IS 'A unique number or alphanumeric code assigned to an assessment.';
+COMMENT ON COLUMN edfi.AssessmentBatteryPartObjectiveAssessment.Namespace IS 'Namespace for the assessment.';
+COMMENT ON COLUMN edfi.AssessmentBatteryPartObjectiveAssessment.IdentificationCode IS 'A unique number or alphanumeric code assigned to an objective assessment by a school, school system, a state, or other agency or entity.';
+
-- Extended Properties [edfi].[AssessmentCategoryDescriptor] --
COMMENT ON TABLE edfi.AssessmentCategoryDescriptor IS 'This descriptor holds the category of an assessment based on format and content.';
COMMENT ON COLUMN edfi.AssessmentCategoryDescriptor.AssessmentCategoryDescriptorId IS 'A unique identifier used as Primary Key, not derived from business logic, when acting as Foreign Key, references the parent table.';
@@ -251,6 +288,27 @@ COMMENT ON COLUMN edfi.AssessmentSection.SchoolYear IS 'The identifier for the s
COMMENT ON COLUMN edfi.AssessmentSection.SectionIdentifier IS 'The local identifier assigned to a section.';
COMMENT ON COLUMN edfi.AssessmentSection.SessionName IS 'The identifier for the calendar for the academic session.';
+-- Extended Properties [edfi].[AssesssmentAdministrationParticipation] --
+COMMENT ON TABLE edfi.AssesssmentAdministrationParticipation IS 'Identifies the point of contact for the administration of an assessment under the purview of an education organization.';
+COMMENT ON COLUMN edfi.AssesssmentAdministrationParticipation.AdministrationIdentifier IS 'The title or name of the assessment in the context of its administration.';
+COMMENT ON COLUMN edfi.AssesssmentAdministrationParticipation.AssessmentIdentifier IS 'A unique number or alphanumeric code assigned to an assessment.';
+COMMENT ON COLUMN edfi.AssesssmentAdministrationParticipation.AssigningEducationOrganizationId IS 'The identifier assigned to an education organization.';
+COMMENT ON COLUMN edfi.AssesssmentAdministrationParticipation.Namespace IS 'Namespace for the assessment.';
+COMMENT ON COLUMN edfi.AssesssmentAdministrationParticipation.ParticipatingEducationOrganizationId IS 'The identifier assigned to an education organization.';
+
+-- Extended Properties [edfi].[AssesssmentAdministrationParticipationAdministrationPoin_c21adc] --
+COMMENT ON TABLE edfi.AssesssmentAdministrationParticipationAdministrationPoin_c21adc IS 'Pre-identified contacts for education organizations administering the assessment.';
+COMMENT ON COLUMN edfi.AssesssmentAdministrationParticipationAdministrationPoin_c21adc.AdministrationIdentifier IS 'The title or name of the assessment in the context of its administration.';
+COMMENT ON COLUMN edfi.AssesssmentAdministrationParticipationAdministrationPoin_c21adc.AssessmentIdentifier IS 'A unique number or alphanumeric code assigned to an assessment.';
+COMMENT ON COLUMN edfi.AssesssmentAdministrationParticipationAdministrationPoin_c21adc.AssigningEducationOrganizationId IS 'The identifier assigned to an education organization.';
+COMMENT ON COLUMN edfi.AssesssmentAdministrationParticipationAdministrationPoin_c21adc.Namespace IS 'Namespace for the assessment.';
+COMMENT ON COLUMN edfi.AssesssmentAdministrationParticipationAdministrationPoin_c21adc.ParticipatingEducationOrganizationId IS 'The identifier assigned to an education organization.';
+COMMENT ON COLUMN edfi.AssesssmentAdministrationParticipationAdministrationPoin_c21adc.EducationOrganizationId IS 'The identifier assigned to an education organization.';
+COMMENT ON COLUMN edfi.AssesssmentAdministrationParticipationAdministrationPoin_c21adc.ElectronicMailAddress IS 'The email address for the contact.';
+COMMENT ON COLUMN edfi.AssesssmentAdministrationParticipationAdministrationPoin_c21adc.FirstName IS 'The contact''s first name.';
+COMMENT ON COLUMN edfi.AssesssmentAdministrationParticipationAdministrationPoin_c21adc.LastSurname IS 'The contact''s last name.';
+COMMENT ON COLUMN edfi.AssesssmentAdministrationParticipationAdministrationPoin_c21adc.LoginId IS 'The login ID for the user; used for security access control interface.';
+
-- Extended Properties [edfi].[AssignmentLateStatusDescriptor] --
COMMENT ON TABLE edfi.AssignmentLateStatusDescriptor IS 'Status of whether the assignment was submitted after the due date and/or marked as late.';
COMMENT ON COLUMN edfi.AssignmentLateStatusDescriptor.AssignmentLateStatusDescriptorId IS 'A unique identifier used as Primary Key, not derived from business logic, when acting as Foreign Key, references the parent table.';
@@ -2622,6 +2680,10 @@ COMMENT ON COLUMN edfi.Section.SectionName IS 'A locally-defined name for the se
COMMENT ON COLUMN edfi.Section.SectionTypeDescriptorId IS 'Specifies whether the section is for attendance only, credit only, or both.';
COMMENT ON COLUMN edfi.Section.SequenceOfCourse IS 'When a section is part of a sequence of parts for a course, the number of the sequence. If the course has only one part, the value of this section attribute should be 1.';
+-- Extended Properties [edfi].[Section504DisabilityTypeDescriptor] --
+COMMENT ON TABLE edfi.Section504DisabilityTypeDescriptor IS 'This descriptor defines the reason(s) why student qualifies for Section 504 consideration.';
+COMMENT ON COLUMN edfi.Section504DisabilityTypeDescriptor.Section504DisabilityTypeDescriptorId IS 'A unique identifier used as Primary Key, not derived from business logic, when acting as Foreign Key, references the parent table.';
+
-- Extended Properties [edfi].[SectionAttendanceTakenEvent] --
COMMENT ON TABLE edfi.SectionAttendanceTakenEvent IS 'Captures attendance taken event for given section.';
COMMENT ON COLUMN edfi.SectionAttendanceTakenEvent.CalendarCode IS 'The identifier for the calendar.';
@@ -3348,6 +3410,63 @@ COMMENT ON COLUMN edfi.StudentAssessmentPeriod.AssessmentPeriodDescriptorId IS '
COMMENT ON COLUMN edfi.StudentAssessmentPeriod.BeginDate IS 'The first date the assessment is to be administered. Note: Date interpretation may vary. Ed-Fi recommends inclusive dates, but states may define dates as inclusive or exclusive. For calculations, align with local guidelines.';
COMMENT ON COLUMN edfi.StudentAssessmentPeriod.EndDate IS 'The last date the assessment is to be administered. Note: Date interpretation may vary. Ed-Fi recommends inclusive dates, but states may define dates as inclusive or exclusive. For calculations, align with local guidelines.';
+-- Extended Properties [edfi].[StudentAssessmentRegistration] --
+COMMENT ON TABLE edfi.StudentAssessmentRegistration IS 'Identifies an assessment registration that a student is expected to participate in including the testing organization, reporting organization and assessment delivery details.';
+COMMENT ON COLUMN edfi.StudentAssessmentRegistration.AdministrationIdentifier IS 'The title or name of the assessment in the context of its administration.';
+COMMENT ON COLUMN edfi.StudentAssessmentRegistration.AssessmentIdentifier IS 'A unique number or alphanumeric code assigned to an assessment.';
+COMMENT ON COLUMN edfi.StudentAssessmentRegistration.AssigningEducationOrganizationId IS 'The identifier assigned to an education organization.';
+COMMENT ON COLUMN edfi.StudentAssessmentRegistration.EducationOrganizationId IS 'The identifier assigned to an education organization.';
+COMMENT ON COLUMN edfi.StudentAssessmentRegistration.Namespace IS 'Namespace for the assessment.';
+COMMENT ON COLUMN edfi.StudentAssessmentRegistration.StudentUSI IS 'A unique alphanumeric code assigned to a student.';
+COMMENT ON COLUMN edfi.StudentAssessmentRegistration.AssessmentGradeLevelDescriptorId IS 'The grade level or primary instructional level at which the student is to be assessed.';
+COMMENT ON COLUMN edfi.StudentAssessmentRegistration.EntryDate IS 'The month, day, and year on which an individual enters and begins to receive instructional services in a school for each school year. The EntryDate value should be the date the student enrolled, or when the student''s enrollment materially changed, such as with a grade promotion. Note: Date interpretation may vary. Ed-Fi recommends inclusive dates, but states may define dates as inclusive or exclusive. For calculations, align with local guidelines.';
+COMMENT ON COLUMN edfi.StudentAssessmentRegistration.PlatformTypeDescriptorId IS 'The environment or format in which the assessment is expected to be administered.';
+COMMENT ON COLUMN edfi.StudentAssessmentRegistration.ReportingEducationOrganizationId IS 'The identifier assigned to an education organization.';
+COMMENT ON COLUMN edfi.StudentAssessmentRegistration.SchoolId IS 'The identifier assigned to a school. It must be distinct from any other identifier assigned to educational organizations, such as a LocalEducationAgencyId, to prevent duplication.';
+COMMENT ON COLUMN edfi.StudentAssessmentRegistration.TestingEducationOrganizationId IS 'The identifier assigned to an education organization.';
+
+-- Extended Properties [edfi].[StudentAssessmentRegistrationAssessmentAccommodation] --
+COMMENT ON TABLE edfi.StudentAssessmentRegistrationAssessmentAccommodation IS 'The special variation(s) to be used in how assessments (in general) are presented, how it is administered, or how the test taker is allowed to respond. This generally refers to changes that do not substantially alter what the examination measures. The proper use of accommodations does not substantially change academic level or performance criteria.';
+COMMENT ON COLUMN edfi.StudentAssessmentRegistrationAssessmentAccommodation.AdministrationIdentifier IS 'The title or name of the assessment in the context of its administration.';
+COMMENT ON COLUMN edfi.StudentAssessmentRegistrationAssessmentAccommodation.AssessmentIdentifier IS 'A unique number or alphanumeric code assigned to an assessment.';
+COMMENT ON COLUMN edfi.StudentAssessmentRegistrationAssessmentAccommodation.AssigningEducationOrganizationId IS 'The identifier assigned to an education organization.';
+COMMENT ON COLUMN edfi.StudentAssessmentRegistrationAssessmentAccommodation.EducationOrganizationId IS 'The identifier assigned to an education organization.';
+COMMENT ON COLUMN edfi.StudentAssessmentRegistrationAssessmentAccommodation.Namespace IS 'Namespace for the assessment.';
+COMMENT ON COLUMN edfi.StudentAssessmentRegistrationAssessmentAccommodation.StudentUSI IS 'A unique alphanumeric code assigned to a student.';
+COMMENT ON COLUMN edfi.StudentAssessmentRegistrationAssessmentAccommodation.AccommodationDescriptorId IS 'The special variation(s) to be used in how assessments (in general) are presented, how it is administered, or how the test taker is allowed to respond. This generally refers to changes that do not substantially alter what the examination measures. The proper use of accommodations does not substantially change academic level or performance criteria.';
+
+-- Extended Properties [edfi].[StudentAssessmentRegistrationAssessmentCustomization] --
+COMMENT ON TABLE edfi.StudentAssessmentRegistrationAssessmentCustomization IS 'Key/value pairs which may be used to facilitate customization of an assessment or to support vendor reporting/analysis.';
+COMMENT ON COLUMN edfi.StudentAssessmentRegistrationAssessmentCustomization.AdministrationIdentifier IS 'The title or name of the assessment in the context of its administration.';
+COMMENT ON COLUMN edfi.StudentAssessmentRegistrationAssessmentCustomization.AssessmentIdentifier IS 'A unique number or alphanumeric code assigned to an assessment.';
+COMMENT ON COLUMN edfi.StudentAssessmentRegistrationAssessmentCustomization.AssigningEducationOrganizationId IS 'The identifier assigned to an education organization.';
+COMMENT ON COLUMN edfi.StudentAssessmentRegistrationAssessmentCustomization.EducationOrganizationId IS 'The identifier assigned to an education organization.';
+COMMENT ON COLUMN edfi.StudentAssessmentRegistrationAssessmentCustomization.Namespace IS 'Namespace for the assessment.';
+COMMENT ON COLUMN edfi.StudentAssessmentRegistrationAssessmentCustomization.StudentUSI IS 'A unique alphanumeric code assigned to a student.';
+COMMENT ON COLUMN edfi.StudentAssessmentRegistrationAssessmentCustomization.CustomizationKey IS 'An agreed upon identifier for the custom information.';
+COMMENT ON COLUMN edfi.StudentAssessmentRegistrationAssessmentCustomization.CustomizationValue IS 'Custom value for the indicated CustomizationKey.';
+
+-- Extended Properties [edfi].[StudentAssessmentRegistrationBatteryPartAssociation] --
+COMMENT ON TABLE edfi.StudentAssessmentRegistrationBatteryPartAssociation IS 'The association to the part(s) of the assessment battery that the student is to be tested for this administration of the assessment.';
+COMMENT ON COLUMN edfi.StudentAssessmentRegistrationBatteryPartAssociation.AdministrationIdentifier IS 'The title or name of the assessment in the context of its administration.';
+COMMENT ON COLUMN edfi.StudentAssessmentRegistrationBatteryPartAssociation.AssessmentBatteryPartName IS 'The name of the part of an assessment battery.';
+COMMENT ON COLUMN edfi.StudentAssessmentRegistrationBatteryPartAssociation.AssessmentIdentifier IS 'A unique number or alphanumeric code assigned to an assessment.';
+COMMENT ON COLUMN edfi.StudentAssessmentRegistrationBatteryPartAssociation.AssigningEducationOrganizationId IS 'The identifier assigned to an education organization.';
+COMMENT ON COLUMN edfi.StudentAssessmentRegistrationBatteryPartAssociation.EducationOrganizationId IS 'The identifier assigned to an education organization.';
+COMMENT ON COLUMN edfi.StudentAssessmentRegistrationBatteryPartAssociation.Namespace IS 'Namespace for the assessment.';
+COMMENT ON COLUMN edfi.StudentAssessmentRegistrationBatteryPartAssociation.StudentUSI IS 'A unique alphanumeric code assigned to a student.';
+
+-- Extended Properties [edfi].[StudentAssessmentRegistrationBatteryPartAssociationAccom_c87694] --
+COMMENT ON TABLE edfi.StudentAssessmentRegistrationBatteryPartAssociationAccom_c87694 IS 'The special variation(s) to be used for the specific part of the assessment battery on how is presented, how it is administered, or how the test taker is allowed to respond.';
+COMMENT ON COLUMN edfi.StudentAssessmentRegistrationBatteryPartAssociationAccom_c87694.AdministrationIdentifier IS 'The title or name of the assessment in the context of its administration.';
+COMMENT ON COLUMN edfi.StudentAssessmentRegistrationBatteryPartAssociationAccom_c87694.AssessmentBatteryPartName IS 'The name of the part of an assessment battery.';
+COMMENT ON COLUMN edfi.StudentAssessmentRegistrationBatteryPartAssociationAccom_c87694.AssessmentIdentifier IS 'A unique number or alphanumeric code assigned to an assessment.';
+COMMENT ON COLUMN edfi.StudentAssessmentRegistrationBatteryPartAssociationAccom_c87694.AssigningEducationOrganizationId IS 'The identifier assigned to an education organization.';
+COMMENT ON COLUMN edfi.StudentAssessmentRegistrationBatteryPartAssociationAccom_c87694.EducationOrganizationId IS 'The identifier assigned to an education organization.';
+COMMENT ON COLUMN edfi.StudentAssessmentRegistrationBatteryPartAssociationAccom_c87694.Namespace IS 'Namespace for the assessment.';
+COMMENT ON COLUMN edfi.StudentAssessmentRegistrationBatteryPartAssociationAccom_c87694.StudentUSI IS 'A unique alphanumeric code assigned to a student.';
+COMMENT ON COLUMN edfi.StudentAssessmentRegistrationBatteryPartAssociationAccom_c87694.AccommodationDescriptorId IS 'The special variation(s) to be used for the specific part of the assessment battery on how is presented, how it is administered, or how the test taker is allowed to respond.';
+
-- Extended Properties [edfi].[StudentAssessmentScoreResult] --
COMMENT ON TABLE edfi.StudentAssessmentScoreResult IS 'A meaningful score or statistical expression of the performance of an individual. The results can be expressed as a number, percentile, range, level, etc.';
COMMENT ON COLUMN edfi.StudentAssessmentScoreResult.AssessmentIdentifier IS 'A unique number or alphanumeric code assigned to an assessment.';
@@ -3528,6 +3647,17 @@ COMMENT ON COLUMN edfi.StudentDisciplineIncidentNonOffenderAssociationDisciplin_
COMMENT ON COLUMN edfi.StudentDisciplineIncidentNonOffenderAssociationDisciplin_4c979a.StudentUSI IS 'A unique alphanumeric code assigned to a student.';
COMMENT ON COLUMN edfi.StudentDisciplineIncidentNonOffenderAssociationDisciplin_4c979a.DisciplineIncidentParticipationCodeDescriptorId IS 'The role or type of participation of a student in a discipline incident.';
+-- Extended Properties [edfi].[StudentEducationOrganizationAssessmentAccommodation] --
+COMMENT ON TABLE edfi.StudentEducationOrganizationAssessmentAccommodation IS 'The accommodation(s) required or expected for administering assessments as determined by the education organization.';
+COMMENT ON COLUMN edfi.StudentEducationOrganizationAssessmentAccommodation.EducationOrganizationId IS 'The identifier assigned to an education organization.';
+COMMENT ON COLUMN edfi.StudentEducationOrganizationAssessmentAccommodation.StudentUSI IS 'A unique alphanumeric code assigned to a student.';
+
+-- Extended Properties [edfi].[StudentEducationOrganizationAssessmentAccommodationGener_d1d10a] --
+COMMENT ON TABLE edfi.StudentEducationOrganizationAssessmentAccommodationGener_d1d10a IS 'The special variation(s) to be used in how assessments (in general) are presented, how it is administered, or how the test taker is allowed to respond. This generally refers to changes that do not substantially alter what the examination measures. The proper use of accommodations does not substantially change academic level or performance criteria.';
+COMMENT ON COLUMN edfi.StudentEducationOrganizationAssessmentAccommodationGener_d1d10a.EducationOrganizationId IS 'The identifier assigned to an education organization.';
+COMMENT ON COLUMN edfi.StudentEducationOrganizationAssessmentAccommodationGener_d1d10a.StudentUSI IS 'A unique alphanumeric code assigned to a student.';
+COMMENT ON COLUMN edfi.StudentEducationOrganizationAssessmentAccommodationGener_d1d10a.AccommodationDescriptorId IS 'The special variation(s) to be used in how assessments (in general) are presented, how it is administered, or how the test taker is allowed to respond. This generally refers to changes that do not substantially alter what the examination measures. The proper use of accommodations does not substantially change academic level or performance criteria.';
+
-- Extended Properties [edfi].[StudentEducationOrganizationAssociation] --
COMMENT ON TABLE edfi.StudentEducationOrganizationAssociation IS 'This association represents student information as reported in the context of the student''s relationship to the education organization. Enrollment relationship semantics are covered by StudentSchoolAssociation.';
COMMENT ON COLUMN edfi.StudentEducationOrganizationAssociation.EducationOrganizationId IS 'The identifier assigned to an education organization.';
@@ -4152,6 +4282,20 @@ COMMENT ON COLUMN edfi.StudentSchoolFoodServiceProgramAssociationSchoolFoodServ_
COMMENT ON COLUMN edfi.StudentSchoolFoodServiceProgramAssociationSchoolFoodServ_85a0eb.ServiceBeginDate IS 'First date the student was in this option for the current school year. Note: Date interpretation may vary. Ed-Fi recommends inclusive dates, but states may define dates as inclusive or exclusive. For calculations, align with local guidelines.';
COMMENT ON COLUMN edfi.StudentSchoolFoodServiceProgramAssociationSchoolFoodServ_85a0eb.ServiceEndDate IS 'Last date the student was in this option for the current school year. Note: Date interpretation may vary. Ed-Fi recommends inclusive dates, but states may define dates as inclusive or exclusive. For calculations, align with local guidelines.';
+-- Extended Properties [edfi].[StudentSection504ProgramAssociation] --
+COMMENT ON TABLE edfi.StudentSection504ProgramAssociation IS 'This association identifies student that qualifies for the Section 504 of the Rehabilitation Act of 1973.';
+COMMENT ON COLUMN edfi.StudentSection504ProgramAssociation.BeginDate IS 'The earliest date the student is involved with the program. Typically, this is the date the student becomes eligible for the program. Note: Date interpretation may vary. Ed-Fi recommends inclusive dates, but states may define dates as inclusive or exclusive. For calculations, align with local guidelines.';
+COMMENT ON COLUMN edfi.StudentSection504ProgramAssociation.EducationOrganizationId IS 'The identifier assigned to an education organization.';
+COMMENT ON COLUMN edfi.StudentSection504ProgramAssociation.ProgramEducationOrganizationId IS 'The identifier assigned to an education organization.';
+COMMENT ON COLUMN edfi.StudentSection504ProgramAssociation.ProgramName IS 'The formal name of the program of instruction, training, services, or benefits available through federal, state, or local agencies.';
+COMMENT ON COLUMN edfi.StudentSection504ProgramAssociation.ProgramTypeDescriptorId IS 'The type of program.';
+COMMENT ON COLUMN edfi.StudentSection504ProgramAssociation.StudentUSI IS 'A unique alphanumeric code assigned to a student.';
+COMMENT ON COLUMN edfi.StudentSection504ProgramAssociation.AccommodationPlan IS 'Indicates whether student has a Section 504 accommodation plan.';
+COMMENT ON COLUMN edfi.StudentSection504ProgramAssociation.Section504DisabilityTypeDescriptorId IS 'Defines one or more disabilities student has that qualifies them for a Section 504 plan.';
+COMMENT ON COLUMN edfi.StudentSection504ProgramAssociation.Section504Eligibility IS 'Indicates whether student has a disability, either temporary or permenant, that qualifies student for Section 504 consideration. Selection of FALSE for this boolean is equivalent to marking student as ''Did Not Qualify''.';
+COMMENT ON COLUMN edfi.StudentSection504ProgramAssociation.Section504EligibilityDecisionDate IS 'The month, day, and year on which the Section 504 eligibility decision is made.';
+COMMENT ON COLUMN edfi.StudentSection504ProgramAssociation.Section504MeetingDate IS 'The month, day, and year on which the meeting with student''s parent/guardian held to discuss the 504 eligibility of the student.';
+
-- Extended Properties [edfi].[StudentSectionAssociation] --
COMMENT ON TABLE edfi.StudentSectionAssociation IS 'This association indicates the course sections to which a student is assigned.';
COMMENT ON COLUMN edfi.StudentSectionAssociation.BeginDate IS 'Month, day, and year of the student''s entry or assignment to the section. Note: Date interpretation may vary. Ed-Fi recommends inclusive dates, but states may define dates as inclusive or exclusive. For calculations, align with local guidelines.';
@@ -4303,6 +4447,7 @@ COMMENT ON COLUMN edfi.StudentSpecialEducationProgramAssociationSpecialEducatio_
COMMENT ON TABLE edfi.StudentSpecialEducationProgramEligibilityAssociation IS 'Captures details regarding the evaluation process for eligibility of students for special education services under IDEA Part C or Part B.';
COMMENT ON COLUMN edfi.StudentSpecialEducationProgramEligibilityAssociation.ConsentToEvaluationReceivedDate IS 'Indicates the date on which the local education agency received written consent for the evaluation from the student''s parent or guardian. This is the first day of the evaluation timeframe.';
COMMENT ON COLUMN edfi.StudentSpecialEducationProgramEligibilityAssociation.EducationOrganizationId IS 'The identifier assigned to an education organization.';
+COMMENT ON COLUMN edfi.StudentSpecialEducationProgramEligibilityAssociation.ProgramEducationOrganizationId IS 'The identifier assigned to an education organization.';
COMMENT ON COLUMN edfi.StudentSpecialEducationProgramEligibilityAssociation.ProgramName IS 'The formal name of the program of instruction, training, services, or benefits available through federal, state, or local agencies.';
COMMENT ON COLUMN edfi.StudentSpecialEducationProgramEligibilityAssociation.ProgramTypeDescriptorId IS 'The type of program.';
COMMENT ON COLUMN edfi.StudentSpecialEducationProgramEligibilityAssociation.StudentUSI IS 'A unique alphanumeric code assigned to a student.';
diff --git a/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/PgSql/Structure/Ods/1410-CreateIndex-EdOrgIdsRelationship-AuthPerformance.sql b/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/PgSql/Structure/Ods/1410-CreateIndex-EdOrgIdsRelationship-AuthPerformance.sql
index 4a5f20860c..dad9fa2345 100644
--- a/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/PgSql/Structure/Ods/1410-CreateIndex-EdOrgIdsRelationship-AuthPerformance.sql
+++ b/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/PgSql/Structure/Ods/1410-CreateIndex-EdOrgIdsRelationship-AuthPerformance.sql
@@ -10,6 +10,8 @@ CREATE INDEX IF NOT EXISTS IX_AccountabilityRating_EducationOrganizationId ON ed
CREATE INDEX IF NOT EXISTS IX_Assessment_EducationOrganizationId ON edfi.Assessment(EducationOrganizationId) INCLUDE (Id);
+CREATE INDEX IF NOT EXISTS IX_AssesssmentAdministrationParticipation_AssigningEducationOrganizationId ON edfi.AssesssmentAdministrationParticipation(AssigningEducationOrganizationId) INCLUDE (Id);
+
CREATE INDEX IF NOT EXISTS IX_BellSchedule_SchoolId ON edfi.BellSchedule(SchoolId) INCLUDE (Id);
CREATE INDEX IF NOT EXISTS IX_Calendar_SchoolId ON edfi.Calendar(SchoolId) INCLUDE (Id);
@@ -116,12 +118,24 @@ CREATE INDEX IF NOT EXISTS IX_StudentAcademicRecord_EducationOrganizationId ON e
CREATE INDEX IF NOT EXISTS IX_StudentAssessmentEducationOrganizationAssociation_EducationOrganizationId ON edfi.StudentAssessmentEducationOrganizationAssociation(EducationOrganizationId) INCLUDE (Id);
+CREATE INDEX IF NOT EXISTS IX_StudentAssessmentRegistration_AssigningEducationOrganizationId ON edfi.StudentAssessmentRegistration(AssigningEducationOrganizationId) INCLUDE (Id);
+
+CREATE INDEX IF NOT EXISTS IX_StudentAssessmentRegistration_EducationOrganizationId ON edfi.StudentAssessmentRegistration(EducationOrganizationId) INCLUDE (Id);
+
+CREATE INDEX IF NOT EXISTS IX_StudentAssessmentRegistration_SchoolId ON edfi.StudentAssessmentRegistration(SchoolId) INCLUDE (Id);
+
+CREATE INDEX IF NOT EXISTS IX_StudentAssessmentRegistrationBatteryPartAssociation_AssigningEducationOrganizationId ON edfi.StudentAssessmentRegistrationBatteryPartAssociation(AssigningEducationOrganizationId) INCLUDE (Id);
+
+CREATE INDEX IF NOT EXISTS IX_StudentAssessmentRegistrationBatteryPartAssociation_EducationOrganizationId ON edfi.StudentAssessmentRegistrationBatteryPartAssociation(EducationOrganizationId) INCLUDE (Id);
+
CREATE INDEX IF NOT EXISTS IX_StudentCohortAssociation_EducationOrganizationId ON edfi.StudentCohortAssociation(EducationOrganizationId) INCLUDE (Id);
CREATE INDEX IF NOT EXISTS IX_StudentDisciplineIncidentBehaviorAssociation_SchoolId ON edfi.StudentDisciplineIncidentBehaviorAssociation(SchoolId) INCLUDE (Id);
CREATE INDEX IF NOT EXISTS IX_StudentDisciplineIncidentNonOffenderAssociation_SchoolId ON edfi.StudentDisciplineIncidentNonOffenderAssociation(SchoolId) INCLUDE (Id);
+CREATE INDEX IF NOT EXISTS IX_StudentEducationOrganizationAssessmentAccommodation_EducationOrganizationId ON edfi.StudentEducationOrganizationAssessmentAccommodation(EducationOrganizationId) INCLUDE (Id);
+
CREATE INDEX IF NOT EXISTS IX_StudentEducationOrganizationAssociation_EducationOrganizationId ON edfi.StudentEducationOrganizationAssociation(EducationOrganizationId) INCLUDE (Id);
CREATE INDEX IF NOT EXISTS IX_StudentEducationOrganizationResponsibilityAssociation_EducationOrganizationId ON edfi.StudentEducationOrganizationResponsibilityAssociation(EducationOrganizationId) INCLUDE (Id);
diff --git a/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/PgSql/Structure/Ods/1460-AggregateIdColumns.sql b/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/PgSql/Structure/Ods/1460-AggregateIdColumns.sql
index 07ab39a490..4d9cac0926 100644
--- a/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/PgSql/Structure/Ods/1460-AggregateIdColumns.sql
+++ b/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/PgSql/Structure/Ods/1460-AggregateIdColumns.sql
@@ -19,6 +19,16 @@ ALTER TABLE edfi.Assessment ADD COLUMN AggregateId int NOT NULL DEFAULT nextval(
CREATE INDEX ix_Assessment_aggid ON edfi.Assessment (AggregateId);
+CREATE SEQUENCE edfi.AssessmentAdministration_aggseq START WITH -2147483648 INCREMENT BY 1 MINVALUE -2147483648;
+ALTER TABLE edfi.AssessmentAdministration ADD COLUMN AggregateId int NOT NULL DEFAULT nextval('edfi.AssessmentAdministration_aggseq');
+CREATE INDEX ix_AssessmentAdministration_aggid ON edfi.AssessmentAdministration (AggregateId);
+
+
+CREATE SEQUENCE edfi.AssessmentBatteryPart_aggseq START WITH -2147483648 INCREMENT BY 1 MINVALUE -2147483648;
+ALTER TABLE edfi.AssessmentBatteryPart ADD COLUMN AggregateId int NOT NULL DEFAULT nextval('edfi.AssessmentBatteryPart_aggseq');
+CREATE INDEX ix_AssessmentBatteryPart_aggid ON edfi.AssessmentBatteryPart (AggregateId);
+
+
CREATE SEQUENCE edfi.AssessmentItem_aggseq START WITH -2147483648 INCREMENT BY 1 MINVALUE -2147483648;
ALTER TABLE edfi.AssessmentItem ADD COLUMN AggregateId int NOT NULL DEFAULT nextval('edfi.AssessmentItem_aggseq');
CREATE INDEX ix_AssessmentItem_aggid ON edfi.AssessmentItem (AggregateId);
@@ -29,6 +39,11 @@ ALTER TABLE edfi.AssessmentScoreRangeLearningStandard ADD COLUMN AggregateId int
CREATE INDEX ix_AssessmentScoreRangeLearningStandard_aggid ON edfi.AssessmentScoreRangeLearningStandard (AggregateId);
+CREATE SEQUENCE edfi.AssesssmentAdministrationParticipation_aggseq START WITH -2147483648 INCREMENT BY 1 MINVALUE -2147483648;
+ALTER TABLE edfi.AssesssmentAdministrationParticipation ADD COLUMN AggregateId int NOT NULL DEFAULT nextval('edfi.AssesssmentAdministrationParticipation_aggseq');
+CREATE INDEX ix_AssesssmentAdministrationParticipation_aggid ON edfi.AssesssmentAdministrationParticipation (AggregateId);
+
+
CREATE SEQUENCE edfi.BalanceSheetDimension_aggseq START WITH -2147483648 INCREMENT BY 1 MINVALUE -2147483648;
ALTER TABLE edfi.BalanceSheetDimension ADD COLUMN AggregateId int NOT NULL DEFAULT nextval('edfi.BalanceSheetDimension_aggseq');
CREATE INDEX ix_BalanceSheetDimension_aggid ON edfi.BalanceSheetDimension (AggregateId);
@@ -424,6 +439,16 @@ ALTER TABLE edfi.StudentAssessmentEducationOrganizationAssociation ADD COLUMN Ag
CREATE INDEX ix_StudentAssessmentEducationOrganizationAssociation_aggid ON edfi.StudentAssessmentEducationOrganizationAssociation (AggregateId);
+CREATE SEQUENCE edfi.StudentAssessmentRegistration_aggseq START WITH -2147483648 INCREMENT BY 1 MINVALUE -2147483648;
+ALTER TABLE edfi.StudentAssessmentRegistration ADD COLUMN AggregateId int NOT NULL DEFAULT nextval('edfi.StudentAssessmentRegistration_aggseq');
+CREATE INDEX ix_StudentAssessmentRegistration_aggid ON edfi.StudentAssessmentRegistration (AggregateId);
+
+
+CREATE SEQUENCE edfi.StudentAssessmentRegistrationBatteryPartAssociation_aggseq START WITH -2147483648 INCREMENT BY 1 MINVALUE -2147483648;
+ALTER TABLE edfi.StudentAssessmentRegistrationBatteryPartAssociation ADD COLUMN AggregateId int NOT NULL DEFAULT nextval('edfi.StudentAssessmentRegistrationBatteryPartAssociation_aggseq');
+CREATE INDEX ix_StudentAssessmentRegistrationBatteryPartAssociation_aggid ON edfi.StudentAssessmentRegistrationBatteryPartAssociation (AggregateId);
+
+
CREATE SEQUENCE edfi.StudentCohortAssociation_aggseq START WITH -2147483648 INCREMENT BY 1 MINVALUE -2147483648;
ALTER TABLE edfi.StudentCohortAssociation ADD COLUMN AggregateId int NOT NULL DEFAULT nextval('edfi.StudentCohortAssociation_aggseq');
CREATE INDEX ix_StudentCohortAssociation_aggid ON edfi.StudentCohortAssociation (AggregateId);
@@ -449,6 +474,11 @@ ALTER TABLE edfi.StudentDisciplineIncidentNonOffenderAssociation ADD COLUMN Aggr
CREATE INDEX ix_StudentDisciplineIncidentNonOffenderAssociation_aggid ON edfi.StudentDisciplineIncidentNonOffenderAssociation (AggregateId);
+CREATE SEQUENCE edfi.StudentEducationOrganizationAssessmentAccommodation_aggseq START WITH -2147483648 INCREMENT BY 1 MINVALUE -2147483648;
+ALTER TABLE edfi.StudentEducationOrganizationAssessmentAccommodation ADD COLUMN AggregateId int NOT NULL DEFAULT nextval('edfi.StudentEducationOrganizationAssessmentAccommodation_aggseq');
+CREATE INDEX ix_StudentEducationOrganizationAssessmentAccommodation_aggid ON edfi.StudentEducationOrganizationAssessmentAccommodation (AggregateId);
+
+
CREATE SEQUENCE edfi.StudentEducationOrganizationAssociation_aggseq START WITH -2147483648 INCREMENT BY 1 MINVALUE -2147483648;
ALTER TABLE edfi.StudentEducationOrganizationAssociation ADD COLUMN AggregateId int NOT NULL DEFAULT nextval('edfi.StudentEducationOrganizationAssociation_aggseq');
CREATE INDEX ix_StudentEducationOrganizationAssociation_aggid ON edfi.StudentEducationOrganizationAssociation (AggregateId);
diff --git a/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/PgSql/Structure/Ods/Changes/0030-AddColumnChangeVersionForTables.sql b/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/PgSql/Structure/Ods/Changes/0030-AddColumnChangeVersionForTables.sql
index 76e4ba289a..3b6c4dd15a 100644
--- a/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/PgSql/Structure/Ods/Changes/0030-AddColumnChangeVersionForTables.sql
+++ b/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/PgSql/Structure/Ods/Changes/0030-AddColumnChangeVersionForTables.sql
@@ -21,6 +21,16 @@ ALTER TABLE edfi.Assessment ADD ChangeVersion BIGINT DEFAULT (0) NOT NULL;
ALTER TABLE edfi.Assessment ALTER ChangeVersion SET DEFAULT nextval('changes.ChangeVersionSequence');
END IF;
+IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema='edfi' AND table_name='assessmentadministration' AND column_name='changeversion') THEN
+ALTER TABLE edfi.AssessmentAdministration ADD ChangeVersion BIGINT DEFAULT (0) NOT NULL;
+ALTER TABLE edfi.AssessmentAdministration ALTER ChangeVersion SET DEFAULT nextval('changes.ChangeVersionSequence');
+END IF;
+
+IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema='edfi' AND table_name='assessmentbatterypart' AND column_name='changeversion') THEN
+ALTER TABLE edfi.AssessmentBatteryPart ADD ChangeVersion BIGINT DEFAULT (0) NOT NULL;
+ALTER TABLE edfi.AssessmentBatteryPart ALTER ChangeVersion SET DEFAULT nextval('changes.ChangeVersionSequence');
+END IF;
+
IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema='edfi' AND table_name='assessmentitem' AND column_name='changeversion') THEN
ALTER TABLE edfi.AssessmentItem ADD ChangeVersion BIGINT DEFAULT (0) NOT NULL;
ALTER TABLE edfi.AssessmentItem ALTER ChangeVersion SET DEFAULT nextval('changes.ChangeVersionSequence');
@@ -31,6 +41,11 @@ ALTER TABLE edfi.AssessmentScoreRangeLearningStandard ADD ChangeVersion BIGINT D
ALTER TABLE edfi.AssessmentScoreRangeLearningStandard ALTER ChangeVersion SET DEFAULT nextval('changes.ChangeVersionSequence');
END IF;
+IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema='edfi' AND table_name='assesssmentadministrationparticipation' AND column_name='changeversion') THEN
+ALTER TABLE edfi.AssesssmentAdministrationParticipation ADD ChangeVersion BIGINT DEFAULT (0) NOT NULL;
+ALTER TABLE edfi.AssesssmentAdministrationParticipation ALTER ChangeVersion SET DEFAULT nextval('changes.ChangeVersionSequence');
+END IF;
+
IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema='edfi' AND table_name='balancesheetdimension' AND column_name='changeversion') THEN
ALTER TABLE edfi.BalanceSheetDimension ADD ChangeVersion BIGINT DEFAULT (0) NOT NULL;
ALTER TABLE edfi.BalanceSheetDimension ALTER ChangeVersion SET DEFAULT nextval('changes.ChangeVersionSequence');
@@ -426,6 +441,16 @@ ALTER TABLE edfi.StudentAssessmentEducationOrganizationAssociation ADD ChangeVer
ALTER TABLE edfi.StudentAssessmentEducationOrganizationAssociation ALTER ChangeVersion SET DEFAULT nextval('changes.ChangeVersionSequence');
END IF;
+IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema='edfi' AND table_name='studentassessmentregistration' AND column_name='changeversion') THEN
+ALTER TABLE edfi.StudentAssessmentRegistration ADD ChangeVersion BIGINT DEFAULT (0) NOT NULL;
+ALTER TABLE edfi.StudentAssessmentRegistration ALTER ChangeVersion SET DEFAULT nextval('changes.ChangeVersionSequence');
+END IF;
+
+IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema='edfi' AND table_name='studentassessmentregistrationbatterypartassociation' AND column_name='changeversion') THEN
+ALTER TABLE edfi.StudentAssessmentRegistrationBatteryPartAssociation ADD ChangeVersion BIGINT DEFAULT (0) NOT NULL;
+ALTER TABLE edfi.StudentAssessmentRegistrationBatteryPartAssociation ALTER ChangeVersion SET DEFAULT nextval('changes.ChangeVersionSequence');
+END IF;
+
IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema='edfi' AND table_name='studentcohortassociation' AND column_name='changeversion') THEN
ALTER TABLE edfi.StudentCohortAssociation ADD ChangeVersion BIGINT DEFAULT (0) NOT NULL;
ALTER TABLE edfi.StudentCohortAssociation ALTER ChangeVersion SET DEFAULT nextval('changes.ChangeVersionSequence');
@@ -451,6 +476,11 @@ ALTER TABLE edfi.StudentDisciplineIncidentNonOffenderAssociation ADD ChangeVersi
ALTER TABLE edfi.StudentDisciplineIncidentNonOffenderAssociation ALTER ChangeVersion SET DEFAULT nextval('changes.ChangeVersionSequence');
END IF;
+IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema='edfi' AND table_name='studenteducationorganizationassessmentaccommodation' AND column_name='changeversion') THEN
+ALTER TABLE edfi.StudentEducationOrganizationAssessmentAccommodation ADD ChangeVersion BIGINT DEFAULT (0) NOT NULL;
+ALTER TABLE edfi.StudentEducationOrganizationAssessmentAccommodation ALTER ChangeVersion SET DEFAULT nextval('changes.ChangeVersionSequence');
+END IF;
+
IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema='edfi' AND table_name='studenteducationorganizationassociation' AND column_name='changeversion') THEN
ALTER TABLE edfi.StudentEducationOrganizationAssociation ADD ChangeVersion BIGINT DEFAULT (0) NOT NULL;
ALTER TABLE edfi.StudentEducationOrganizationAssociation ALTER ChangeVersion SET DEFAULT nextval('changes.ChangeVersionSequence');
diff --git a/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/PgSql/Structure/Ods/Changes/0070-AddIndexChangeVersionForTables.sql b/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/PgSql/Structure/Ods/Changes/0070-AddIndexChangeVersionForTables.sql
index 05edf38725..57d9cf0bb1 100644
--- a/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/PgSql/Structure/Ods/Changes/0070-AddIndexChangeVersionForTables.sql
+++ b/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/PgSql/Structure/Ods/Changes/0070-AddIndexChangeVersionForTables.sql
@@ -9,10 +9,16 @@ CREATE INDEX IF NOT EXISTS UX_2d3c0c_ChangeVersion ON edfi.AccountabilityRating(
CREATE INDEX IF NOT EXISTS UX_7808ee_ChangeVersion ON edfi.Assessment(ChangeVersion);
+CREATE INDEX IF NOT EXISTS UX_c64558_ChangeVersion ON edfi.AssessmentAdministration(ChangeVersion);
+
+CREATE INDEX IF NOT EXISTS UX_6e22f2_ChangeVersion ON edfi.AssessmentBatteryPart(ChangeVersion);
+
CREATE INDEX IF NOT EXISTS UX_dc3dcf_ChangeVersion ON edfi.AssessmentItem(ChangeVersion);
CREATE INDEX IF NOT EXISTS UX_a20588_ChangeVersion ON edfi.AssessmentScoreRangeLearningStandard(ChangeVersion);
+CREATE INDEX IF NOT EXISTS UX_0b52ab_ChangeVersion ON edfi.AssesssmentAdministrationParticipation(ChangeVersion);
+
CREATE INDEX IF NOT EXISTS UX_e52c9c_ChangeVersion ON edfi.BalanceSheetDimension(ChangeVersion);
CREATE INDEX IF NOT EXISTS UX_9bbaf5_ChangeVersion ON edfi.BellSchedule(ChangeVersion);
@@ -171,6 +177,10 @@ CREATE INDEX IF NOT EXISTS UX_ee3b2a_ChangeVersion ON edfi.StudentAssessment(Cha
CREATE INDEX IF NOT EXISTS UX_afb8b8_ChangeVersion ON edfi.StudentAssessmentEducationOrganizationAssociation(ChangeVersion);
+CREATE INDEX IF NOT EXISTS UX_79fd6b_ChangeVersion ON edfi.StudentAssessmentRegistration(ChangeVersion);
+
+CREATE INDEX IF NOT EXISTS UX_3bb369_ChangeVersion ON edfi.StudentAssessmentRegistrationBatteryPartAssociation(ChangeVersion);
+
CREATE INDEX IF NOT EXISTS UX_369ddc_ChangeVersion ON edfi.StudentCohortAssociation(ChangeVersion);
CREATE INDEX IF NOT EXISTS UX_395c07_ChangeVersion ON edfi.StudentCompetencyObjective(ChangeVersion);
@@ -181,6 +191,8 @@ CREATE INDEX IF NOT EXISTS UX_f4934f_ChangeVersion ON edfi.StudentDisciplineInci
CREATE INDEX IF NOT EXISTS UX_4b43da_ChangeVersion ON edfi.StudentDisciplineIncidentNonOffenderAssociation(ChangeVersion);
+CREATE INDEX IF NOT EXISTS UX_5f4481_ChangeVersion ON edfi.StudentEducationOrganizationAssessmentAccommodation(ChangeVersion);
+
CREATE INDEX IF NOT EXISTS UX_8e1257_ChangeVersion ON edfi.StudentEducationOrganizationAssociation(ChangeVersion);
CREATE INDEX IF NOT EXISTS UX_42aa64_ChangeVersion ON edfi.StudentEducationOrganizationResponsibilityAssociation(ChangeVersion);
diff --git a/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/PgSql/Structure/Ods/Changes/0200-CreateTrackedChangeTables.sql b/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/PgSql/Structure/Ods/Changes/0200-CreateTrackedChangeTables.sql
index 93d670d393..2dc5a0de01 100644
--- a/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/PgSql/Structure/Ods/Changes/0200-CreateTrackedChangeTables.sql
+++ b/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/PgSql/Structure/Ods/Changes/0200-CreateTrackedChangeTables.sql
@@ -57,6 +57,42 @@ CREATE TABLE tracked_changes_edfi.assessment
);
END IF;
+IF NOT EXISTS (SELECT 1 FROM information_schema.tables WHERE table_schema = 'tracked_changes_edfi' AND table_name = 'assessmentadministration') THEN
+CREATE TABLE tracked_changes_edfi.assessmentadministration
+(
+ oldadministrationidentifier VARCHAR(255) NOT NULL,
+ oldassessmentidentifier VARCHAR(60) NOT NULL,
+ oldassigningeducationorganizationid BIGINT NOT NULL,
+ oldnamespace VARCHAR(255) NOT NULL,
+ newadministrationidentifier VARCHAR(255) NULL,
+ newassessmentidentifier VARCHAR(60) NULL,
+ newassigningeducationorganizationid BIGINT NULL,
+ newnamespace VARCHAR(255) NULL,
+ id uuid NOT NULL,
+ changeversion bigint NOT NULL,
+ discriminator varchar(128) NULL,
+ createdate timestamp NOT NULL DEFAULT (now()),
+ CONSTRAINT assessmentadministration_pk PRIMARY KEY (ChangeVersion)
+);
+END IF;
+
+IF NOT EXISTS (SELECT 1 FROM information_schema.tables WHERE table_schema = 'tracked_changes_edfi' AND table_name = 'assessmentbatterypart') THEN
+CREATE TABLE tracked_changes_edfi.assessmentbatterypart
+(
+ oldassessmentbatterypartname VARCHAR(65) NOT NULL,
+ oldassessmentidentifier VARCHAR(60) NOT NULL,
+ oldnamespace VARCHAR(255) NOT NULL,
+ newassessmentbatterypartname VARCHAR(65) NULL,
+ newassessmentidentifier VARCHAR(60) NULL,
+ newnamespace VARCHAR(255) NULL,
+ id uuid NOT NULL,
+ changeversion bigint NOT NULL,
+ discriminator varchar(128) NULL,
+ createdate timestamp NOT NULL DEFAULT (now()),
+ CONSTRAINT assessmentbatterypart_pk PRIMARY KEY (ChangeVersion)
+);
+END IF;
+
IF NOT EXISTS (SELECT 1 FROM information_schema.tables WHERE table_schema = 'tracked_changes_edfi' AND table_name = 'assessmentitem') THEN
CREATE TABLE tracked_changes_edfi.assessmentitem
(
@@ -91,6 +127,27 @@ CREATE TABLE tracked_changes_edfi.assessmentscorerangelearningstandard
);
END IF;
+IF NOT EXISTS (SELECT 1 FROM information_schema.tables WHERE table_schema = 'tracked_changes_edfi' AND table_name = 'assesssmentadministrationparticipation') THEN
+CREATE TABLE tracked_changes_edfi.assesssmentadministrationparticipation
+(
+ oldadministrationidentifier VARCHAR(255) NOT NULL,
+ oldassessmentidentifier VARCHAR(60) NOT NULL,
+ oldassigningeducationorganizationid BIGINT NOT NULL,
+ oldnamespace VARCHAR(255) NOT NULL,
+ oldparticipatingeducationorganizationid BIGINT NOT NULL,
+ newadministrationidentifier VARCHAR(255) NULL,
+ newassessmentidentifier VARCHAR(60) NULL,
+ newassigningeducationorganizationid BIGINT NULL,
+ newnamespace VARCHAR(255) NULL,
+ newparticipatingeducationorganizationid BIGINT NULL,
+ id uuid NOT NULL,
+ changeversion bigint NOT NULL,
+ discriminator varchar(128) NULL,
+ createdate timestamp NOT NULL DEFAULT (now()),
+ CONSTRAINT assesssmentadministrationparticipation_pk PRIMARY KEY (ChangeVersion)
+);
+END IF;
+
IF NOT EXISTS (SELECT 1 FROM information_schema.tables WHERE table_schema = 'tracked_changes_edfi' AND table_name = 'balancesheetdimension') THEN
CREATE TABLE tracked_changes_edfi.balancesheetdimension
(
@@ -1671,6 +1728,58 @@ CREATE TABLE tracked_changes_edfi.studentassessmenteducationorganizationassociat
);
END IF;
+IF NOT EXISTS (SELECT 1 FROM information_schema.tables WHERE table_schema = 'tracked_changes_edfi' AND table_name = 'studentassessmentregistration') THEN
+CREATE TABLE tracked_changes_edfi.studentassessmentregistration
+(
+ oldadministrationidentifier VARCHAR(255) NOT NULL,
+ oldassessmentidentifier VARCHAR(60) NOT NULL,
+ oldassigningeducationorganizationid BIGINT NOT NULL,
+ oldeducationorganizationid BIGINT NOT NULL,
+ oldnamespace VARCHAR(255) NOT NULL,
+ oldstudentusi INT NOT NULL,
+ oldstudentuniqueid VARCHAR(32) NOT NULL,
+ newadministrationidentifier VARCHAR(255) NULL,
+ newassessmentidentifier VARCHAR(60) NULL,
+ newassigningeducationorganizationid BIGINT NULL,
+ neweducationorganizationid BIGINT NULL,
+ newnamespace VARCHAR(255) NULL,
+ newstudentusi INT NULL,
+ newstudentuniqueid VARCHAR(32) NULL,
+ id uuid NOT NULL,
+ changeversion bigint NOT NULL,
+ discriminator varchar(128) NULL,
+ createdate timestamp NOT NULL DEFAULT (now()),
+ CONSTRAINT studentassessmentregistration_pk PRIMARY KEY (ChangeVersion)
+);
+END IF;
+
+IF NOT EXISTS (SELECT 1 FROM information_schema.tables WHERE table_schema = 'tracked_changes_edfi' AND table_name = 'studentassessmentregistrationbatterypartassociation') THEN
+CREATE TABLE tracked_changes_edfi.studentassessmentregistrationbatterypartassociation
+(
+ oldadministrationidentifier VARCHAR(255) NOT NULL,
+ oldassessmentbatterypartname VARCHAR(65) NOT NULL,
+ oldassessmentidentifier VARCHAR(60) NOT NULL,
+ oldassigningeducationorganizationid BIGINT NOT NULL,
+ oldeducationorganizationid BIGINT NOT NULL,
+ oldnamespace VARCHAR(255) NOT NULL,
+ oldstudentusi INT NOT NULL,
+ oldstudentuniqueid VARCHAR(32) NOT NULL,
+ newadministrationidentifier VARCHAR(255) NULL,
+ newassessmentbatterypartname VARCHAR(65) NULL,
+ newassessmentidentifier VARCHAR(60) NULL,
+ newassigningeducationorganizationid BIGINT NULL,
+ neweducationorganizationid BIGINT NULL,
+ newnamespace VARCHAR(255) NULL,
+ newstudentusi INT NULL,
+ newstudentuniqueid VARCHAR(32) NULL,
+ id uuid NOT NULL,
+ changeversion bigint NOT NULL,
+ discriminator varchar(128) NULL,
+ createdate timestamp NOT NULL DEFAULT (now()),
+ CONSTRAINT studentassessmentregistrationbatterypartassociation_pk PRIMARY KEY (ChangeVersion)
+);
+END IF;
+
IF NOT EXISTS (SELECT 1 FROM information_schema.tables WHERE table_schema = 'tracked_changes_edfi' AND table_name = 'studentcohortassociation') THEN
CREATE TABLE tracked_changes_edfi.studentcohortassociation
(
@@ -1792,6 +1901,23 @@ CREATE TABLE tracked_changes_edfi.studentdisciplineincidentnonoffenderassociatio
);
END IF;
+IF NOT EXISTS (SELECT 1 FROM information_schema.tables WHERE table_schema = 'tracked_changes_edfi' AND table_name = 'studenteducationorganizationassessmentaccommodation') THEN
+CREATE TABLE tracked_changes_edfi.studenteducationorganizationassessmentaccommodation
+(
+ oldeducationorganizationid BIGINT NOT NULL,
+ oldstudentusi INT NOT NULL,
+ oldstudentuniqueid VARCHAR(32) NOT NULL,
+ neweducationorganizationid BIGINT NULL,
+ newstudentusi INT NULL,
+ newstudentuniqueid VARCHAR(32) NULL,
+ id uuid NOT NULL,
+ changeversion bigint NOT NULL,
+ discriminator varchar(128) NULL,
+ createdate timestamp NOT NULL DEFAULT (now()),
+ CONSTRAINT studenteducationorganizationassessmentaccommodation_pk PRIMARY KEY (ChangeVersion)
+);
+END IF;
+
IF NOT EXISTS (SELECT 1 FROM information_schema.tables WHERE table_schema = 'tracked_changes_edfi' AND table_name = 'studenteducationorganizationassociation') THEN
CREATE TABLE tracked_changes_edfi.studenteducationorganizationassociation
(
@@ -2105,6 +2231,7 @@ CREATE TABLE tracked_changes_edfi.studentspecialeducationprogrameligibilityassoc
(
oldconsenttoevaluationreceiveddate DATE NOT NULL,
oldeducationorganizationid BIGINT NOT NULL,
+ oldprogrameducationorganizationid BIGINT NOT NULL,
oldprogramname VARCHAR(60) NOT NULL,
oldprogramtypedescriptorid INT NOT NULL,
oldprogramtypedescriptornamespace VARCHAR(255) NOT NULL,
@@ -2113,6 +2240,7 @@ CREATE TABLE tracked_changes_edfi.studentspecialeducationprogrameligibilityassoc
oldstudentuniqueid VARCHAR(32) NOT NULL,
newconsenttoevaluationreceiveddate DATE NULL,
neweducationorganizationid BIGINT NULL,
+ newprogrameducationorganizationid BIGINT NULL,
newprogramname VARCHAR(60) NULL,
newprogramtypedescriptorid INT NULL,
newprogramtypedescriptornamespace VARCHAR(255) NULL,
diff --git a/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/PgSql/Structure/Ods/Changes/0210-CreateTriggersForChangeVersionAndKeyChanges.sql b/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/PgSql/Structure/Ods/Changes/0210-CreateTriggersForChangeVersionAndKeyChanges.sql
index 32944e2529..9715ac085c 100644
--- a/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/PgSql/Structure/Ods/Changes/0210-CreateTriggersForChangeVersionAndKeyChanges.sql
+++ b/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/PgSql/Structure/Ods/Changes/0210-CreateTriggersForChangeVersionAndKeyChanges.sql
@@ -20,6 +20,16 @@ CREATE TRIGGER UpdateChangeVersion BEFORE UPDATE ON edfi.assessment
FOR EACH ROW EXECUTE PROCEDURE changes.UpdateChangeVersion();
END IF;
+IF NOT EXISTS(SELECT 1 FROM information_schema.triggers WHERE trigger_name = 'updatechangeversion' AND event_object_schema = 'edfi' AND event_object_table = 'assessmentadministration') THEN
+CREATE TRIGGER UpdateChangeVersion BEFORE UPDATE ON edfi.assessmentadministration
+ FOR EACH ROW EXECUTE PROCEDURE changes.UpdateChangeVersion();
+END IF;
+
+IF NOT EXISTS(SELECT 1 FROM information_schema.triggers WHERE trigger_name = 'updatechangeversion' AND event_object_schema = 'edfi' AND event_object_table = 'assessmentbatterypart') THEN
+CREATE TRIGGER UpdateChangeVersion BEFORE UPDATE ON edfi.assessmentbatterypart
+ FOR EACH ROW EXECUTE PROCEDURE changes.UpdateChangeVersion();
+END IF;
+
IF NOT EXISTS(SELECT 1 FROM information_schema.triggers WHERE trigger_name = 'updatechangeversion' AND event_object_schema = 'edfi' AND event_object_table = 'assessmentitem') THEN
CREATE TRIGGER UpdateChangeVersion BEFORE UPDATE ON edfi.assessmentitem
FOR EACH ROW EXECUTE PROCEDURE changes.UpdateChangeVersion();
@@ -30,6 +40,11 @@ CREATE TRIGGER UpdateChangeVersion BEFORE UPDATE ON edfi.assessmentscorerangelea
FOR EACH ROW EXECUTE PROCEDURE changes.UpdateChangeVersion();
END IF;
+IF NOT EXISTS(SELECT 1 FROM information_schema.triggers WHERE trigger_name = 'updatechangeversion' AND event_object_schema = 'edfi' AND event_object_table = 'assesssmentadministrationparticipation') THEN
+CREATE TRIGGER UpdateChangeVersion BEFORE UPDATE ON edfi.assesssmentadministrationparticipation
+ FOR EACH ROW EXECUTE PROCEDURE changes.UpdateChangeVersion();
+END IF;
+
IF NOT EXISTS(SELECT 1 FROM information_schema.triggers WHERE trigger_name = 'updatechangeversion' AND event_object_schema = 'edfi' AND event_object_table = 'balancesheetdimension') THEN
CREATE TRIGGER UpdateChangeVersion BEFORE UPDATE ON edfi.balancesheetdimension
FOR EACH ROW EXECUTE PROCEDURE changes.UpdateChangeVersion();
@@ -741,6 +756,16 @@ CREATE TRIGGER UpdateChangeVersion BEFORE UPDATE ON edfi.studentassessmenteducat
FOR EACH ROW EXECUTE PROCEDURE changes.UpdateChangeVersion();
END IF;
+IF NOT EXISTS(SELECT 1 FROM information_schema.triggers WHERE trigger_name = 'updatechangeversion' AND event_object_schema = 'edfi' AND event_object_table = 'studentassessmentregistration') THEN
+CREATE TRIGGER UpdateChangeVersion BEFORE UPDATE ON edfi.studentassessmentregistration
+ FOR EACH ROW EXECUTE PROCEDURE changes.UpdateChangeVersion();
+END IF;
+
+IF NOT EXISTS(SELECT 1 FROM information_schema.triggers WHERE trigger_name = 'updatechangeversion' AND event_object_schema = 'edfi' AND event_object_table = 'studentassessmentregistrationbatterypartassociation') THEN
+CREATE TRIGGER UpdateChangeVersion BEFORE UPDATE ON edfi.studentassessmentregistrationbatterypartassociation
+ FOR EACH ROW EXECUTE PROCEDURE changes.UpdateChangeVersion();
+END IF;
+
IF NOT EXISTS(SELECT 1 FROM information_schema.triggers WHERE trigger_name = 'updatechangeversion' AND event_object_schema = 'edfi' AND event_object_table = 'studentcohortassociation') THEN
CREATE TRIGGER UpdateChangeVersion BEFORE UPDATE ON edfi.studentcohortassociation
FOR EACH ROW EXECUTE PROCEDURE changes.UpdateChangeVersion();
@@ -766,6 +791,11 @@ CREATE TRIGGER UpdateChangeVersion BEFORE UPDATE ON edfi.studentdisciplineincide
FOR EACH ROW EXECUTE PROCEDURE changes.UpdateChangeVersion();
END IF;
+IF NOT EXISTS(SELECT 1 FROM information_schema.triggers WHERE trigger_name = 'updatechangeversion' AND event_object_schema = 'edfi' AND event_object_table = 'studenteducationorganizationassessmentaccommodation') THEN
+CREATE TRIGGER UpdateChangeVersion BEFORE UPDATE ON edfi.studenteducationorganizationassessmentaccommodation
+ FOR EACH ROW EXECUTE PROCEDURE changes.UpdateChangeVersion();
+END IF;
+
IF NOT EXISTS(SELECT 1 FROM information_schema.triggers WHERE trigger_name = 'updatechangeversion' AND event_object_schema = 'edfi' AND event_object_table = 'studenteducationorganizationassociation') THEN
CREATE TRIGGER UpdateChangeVersion BEFORE UPDATE ON edfi.studenteducationorganizationassociation
FOR EACH ROW EXECUTE PROCEDURE changes.UpdateChangeVersion();
diff --git a/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/PgSql/Structure/Ods/Changes/0220-CreateTriggersForDeleteTracking.sql b/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/PgSql/Structure/Ods/Changes/0220-CreateTriggersForDeleteTracking.sql
index 111bc3f40d..4697dc877b 100644
--- a/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/PgSql/Structure/Ods/Changes/0220-CreateTriggersForDeleteTracking.sql
+++ b/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/PgSql/Structure/Ods/Changes/0220-CreateTriggersForDeleteTracking.sql
@@ -252,6 +252,46 @@ CREATE TRIGGER TrackDeletes AFTER DELETE ON edfi.assessment
FOR EACH ROW EXECUTE PROCEDURE tracked_changes_edfi.assessment_deleted();
END IF;
+CREATE OR REPLACE FUNCTION tracked_changes_edfi.assessmentadministration_deleted()
+ RETURNS trigger AS
+$BODY$
+BEGIN
+ INSERT INTO tracked_changes_edfi.assessmentadministration(
+ oldadministrationidentifier, oldassessmentidentifier, oldassigningeducationorganizationid, oldnamespace,
+ id, discriminator, changeversion)
+ VALUES (
+ OLD.administrationidentifier, OLD.assessmentidentifier, OLD.assigningeducationorganizationid, OLD.namespace,
+ OLD.id, OLD.discriminator, nextval('changes.changeversionsequence'));
+
+ RETURN NULL;
+END;
+$BODY$ LANGUAGE plpgsql;
+
+IF NOT EXISTS(SELECT 1 FROM information_schema.triggers WHERE trigger_name = 'trackdeletes' AND event_object_schema = 'edfi' AND event_object_table = 'assessmentadministration') THEN
+CREATE TRIGGER TrackDeletes AFTER DELETE ON edfi.assessmentadministration
+ FOR EACH ROW EXECUTE PROCEDURE tracked_changes_edfi.assessmentadministration_deleted();
+END IF;
+
+CREATE OR REPLACE FUNCTION tracked_changes_edfi.assessmentbatterypart_deleted()
+ RETURNS trigger AS
+$BODY$
+BEGIN
+ INSERT INTO tracked_changes_edfi.assessmentbatterypart(
+ oldassessmentbatterypartname, oldassessmentidentifier, oldnamespace,
+ id, discriminator, changeversion)
+ VALUES (
+ OLD.assessmentbatterypartname, OLD.assessmentidentifier, OLD.namespace,
+ OLD.id, OLD.discriminator, nextval('changes.changeversionsequence'));
+
+ RETURN NULL;
+END;
+$BODY$ LANGUAGE plpgsql;
+
+IF NOT EXISTS(SELECT 1 FROM information_schema.triggers WHERE trigger_name = 'trackdeletes' AND event_object_schema = 'edfi' AND event_object_table = 'assessmentbatterypart') THEN
+CREATE TRIGGER TrackDeletes AFTER DELETE ON edfi.assessmentbatterypart
+ FOR EACH ROW EXECUTE PROCEDURE tracked_changes_edfi.assessmentbatterypart_deleted();
+END IF;
+
CREATE OR REPLACE FUNCTION tracked_changes_edfi.assessmentcategorydescriptor_deleted()
RETURNS trigger AS
$BODY$
@@ -394,6 +434,26 @@ CREATE TRIGGER TrackDeletes AFTER DELETE ON edfi.assessmentscorerangelearningsta
FOR EACH ROW EXECUTE PROCEDURE tracked_changes_edfi.assessmentscorerangelearningstandard_deleted();
END IF;
+CREATE OR REPLACE FUNCTION tracked_changes_edfi.assesssmentadministrationparticipation_deleted()
+ RETURNS trigger AS
+$BODY$
+BEGIN
+ INSERT INTO tracked_changes_edfi.assesssmentadministrationparticipation(
+ oldadministrationidentifier, oldassessmentidentifier, oldassigningeducationorganizationid, oldnamespace, oldparticipatingeducationorganizationid,
+ id, discriminator, changeversion)
+ VALUES (
+ OLD.administrationidentifier, OLD.assessmentidentifier, OLD.assigningeducationorganizationid, OLD.namespace, OLD.participatingeducationorganizationid,
+ OLD.id, OLD.discriminator, nextval('changes.changeversionsequence'));
+
+ RETURN NULL;
+END;
+$BODY$ LANGUAGE plpgsql;
+
+IF NOT EXISTS(SELECT 1 FROM information_schema.triggers WHERE trigger_name = 'trackdeletes' AND event_object_schema = 'edfi' AND event_object_table = 'assesssmentadministrationparticipation') THEN
+CREATE TRIGGER TrackDeletes AFTER DELETE ON edfi.assesssmentadministrationparticipation
+ FOR EACH ROW EXECUTE PROCEDURE tracked_changes_edfi.assesssmentadministrationparticipation_deleted();
+END IF;
+
CREATE OR REPLACE FUNCTION tracked_changes_edfi.assignmentlatestatusdescriptor_deleted()
RETURNS trigger AS
$BODY$
@@ -4347,6 +4407,23 @@ CREATE TRIGGER TrackDeletes AFTER DELETE ON edfi.schoolyeartype
FOR EACH ROW EXECUTE PROCEDURE tracked_changes_edfi.schoolyeartype_deleted();
END IF;
+CREATE OR REPLACE FUNCTION tracked_changes_edfi.section504disabilitytypedescriptor_deleted()
+ RETURNS trigger AS
+$BODY$
+BEGIN
+ INSERT INTO tracked_changes_edfi.descriptor(olddescriptorid, oldcodevalue, oldnamespace, id, discriminator, changeversion)
+ SELECT OLD.Section504DisabilityTypeDescriptorId, b.codevalue, b.namespace, b.id, 'edfi.Section504DisabilityTypeDescriptor', nextval('changes.ChangeVersionSequence')
+ FROM edfi.descriptor b WHERE old.Section504DisabilityTypeDescriptorId = b.descriptorid ;
+
+ RETURN NULL;
+END;
+$BODY$ LANGUAGE plpgsql;
+
+IF NOT EXISTS(SELECT 1 FROM information_schema.triggers WHERE trigger_name = 'trackdeletes' AND event_object_schema = 'edfi' AND event_object_table = 'section504disabilitytypedescriptor') THEN
+CREATE TRIGGER TrackDeletes AFTER DELETE ON edfi.section504disabilitytypedescriptor
+ FOR EACH ROW EXECUTE PROCEDURE tracked_changes_edfi.section504disabilitytypedescriptor_deleted();
+END IF;
+
CREATE OR REPLACE FUNCTION tracked_changes_edfi.section_deleted()
RETURNS trigger AS
$BODY$
@@ -5041,6 +5118,54 @@ CREATE TRIGGER TrackDeletes AFTER DELETE ON edfi.studentassessmenteducationorgan
FOR EACH ROW EXECUTE PROCEDURE tracked_changes_edfi.studentassessmenteducationorganizationassociation_deleted();
END IF;
+CREATE OR REPLACE FUNCTION tracked_changes_edfi.studentassessmentregistration_deleted()
+ RETURNS trigger AS
+$BODY$
+DECLARE
+ dj0 edfi.student%ROWTYPE;
+BEGIN
+ SELECT INTO dj0 * FROM edfi.student j0 WHERE studentusi = old.studentusi;
+
+ INSERT INTO tracked_changes_edfi.studentassessmentregistration(
+ oldadministrationidentifier, oldassessmentidentifier, oldassigningeducationorganizationid, oldeducationorganizationid, oldnamespace, oldstudentusi, oldstudentuniqueid,
+ id, discriminator, changeversion)
+ VALUES (
+ OLD.administrationidentifier, OLD.assessmentidentifier, OLD.assigningeducationorganizationid, OLD.educationorganizationid, OLD.namespace, OLD.studentusi, dj0.studentuniqueid,
+ OLD.id, OLD.discriminator, nextval('changes.changeversionsequence'));
+
+ RETURN NULL;
+END;
+$BODY$ LANGUAGE plpgsql;
+
+IF NOT EXISTS(SELECT 1 FROM information_schema.triggers WHERE trigger_name = 'trackdeletes' AND event_object_schema = 'edfi' AND event_object_table = 'studentassessmentregistration') THEN
+CREATE TRIGGER TrackDeletes AFTER DELETE ON edfi.studentassessmentregistration
+ FOR EACH ROW EXECUTE PROCEDURE tracked_changes_edfi.studentassessmentregistration_deleted();
+END IF;
+
+CREATE OR REPLACE FUNCTION tracked_changes_edfi.studentassessmentregistrationbatterypartassociation_deleted()
+ RETURNS trigger AS
+$BODY$
+DECLARE
+ dj0 edfi.student%ROWTYPE;
+BEGIN
+ SELECT INTO dj0 * FROM edfi.student j0 WHERE studentusi = old.studentusi;
+
+ INSERT INTO tracked_changes_edfi.studentassessmentregistrationbatterypartassociation(
+ oldadministrationidentifier, oldassessmentbatterypartname, oldassessmentidentifier, oldassigningeducationorganizationid, oldeducationorganizationid, oldnamespace, oldstudentusi, oldstudentuniqueid,
+ id, discriminator, changeversion)
+ VALUES (
+ OLD.administrationidentifier, OLD.assessmentbatterypartname, OLD.assessmentidentifier, OLD.assigningeducationorganizationid, OLD.educationorganizationid, OLD.namespace, OLD.studentusi, dj0.studentuniqueid,
+ OLD.id, OLD.discriminator, nextval('changes.changeversionsequence'));
+
+ RETURN NULL;
+END;
+$BODY$ LANGUAGE plpgsql;
+
+IF NOT EXISTS(SELECT 1 FROM information_schema.triggers WHERE trigger_name = 'trackdeletes' AND event_object_schema = 'edfi' AND event_object_table = 'studentassessmentregistrationbatterypartassociation') THEN
+CREATE TRIGGER TrackDeletes AFTER DELETE ON edfi.studentassessmentregistrationbatterypartassociation
+ FOR EACH ROW EXECUTE PROCEDURE tracked_changes_edfi.studentassessmentregistrationbatterypartassociation_deleted();
+END IF;
+
CREATE OR REPLACE FUNCTION tracked_changes_edfi.studentcharacteristicdescriptor_deleted()
RETURNS trigger AS
$BODY$
@@ -5190,6 +5315,30 @@ CREATE TRIGGER TrackDeletes AFTER DELETE ON edfi.studentdisciplineincidentnonoff
FOR EACH ROW EXECUTE PROCEDURE tracked_changes_edfi.studentdisciplineincidentnonoffenderassociation_deleted();
END IF;
+CREATE OR REPLACE FUNCTION tracked_changes_edfi.studenteducationorganizationassessmentaccommodation_deleted()
+ RETURNS trigger AS
+$BODY$
+DECLARE
+ dj0 edfi.student%ROWTYPE;
+BEGIN
+ SELECT INTO dj0 * FROM edfi.student j0 WHERE studentusi = old.studentusi;
+
+ INSERT INTO tracked_changes_edfi.studenteducationorganizationassessmentaccommodation(
+ oldeducationorganizationid, oldstudentusi, oldstudentuniqueid,
+ id, discriminator, changeversion)
+ VALUES (
+ OLD.educationorganizationid, OLD.studentusi, dj0.studentuniqueid,
+ OLD.id, OLD.discriminator, nextval('changes.changeversionsequence'));
+
+ RETURN NULL;
+END;
+$BODY$ LANGUAGE plpgsql;
+
+IF NOT EXISTS(SELECT 1 FROM information_schema.triggers WHERE trigger_name = 'trackdeletes' AND event_object_schema = 'edfi' AND event_object_table = 'studenteducationorganizationassessmentaccommodation') THEN
+CREATE TRIGGER TrackDeletes AFTER DELETE ON edfi.studenteducationorganizationassessmentaccommodation
+ FOR EACH ROW EXECUTE PROCEDURE tracked_changes_edfi.studenteducationorganizationassessmentaccommodation_deleted();
+END IF;
+
CREATE OR REPLACE FUNCTION tracked_changes_edfi.studenteducationorganizationassociation_deleted()
RETURNS trigger AS
$BODY$
@@ -5534,10 +5683,10 @@ BEGIN
SELECT INTO dj1 * FROM edfi.student j1 WHERE studentusi = old.studentusi;
INSERT INTO tracked_changes_edfi.studentspecialeducationprogrameligibilityassociation(
- oldconsenttoevaluationreceiveddate, oldeducationorganizationid, oldprogramname, oldprogramtypedescriptorid, oldprogramtypedescriptornamespace, oldprogramtypedescriptorcodevalue, oldstudentusi, oldstudentuniqueid,
+ oldconsenttoevaluationreceiveddate, oldeducationorganizationid, oldprogrameducationorganizationid, oldprogramname, oldprogramtypedescriptorid, oldprogramtypedescriptornamespace, oldprogramtypedescriptorcodevalue, oldstudentusi, oldstudentuniqueid,
id, discriminator, changeversion)
VALUES (
- OLD.consenttoevaluationreceiveddate, OLD.educationorganizationid, OLD.programname, OLD.programtypedescriptorid, dj0.namespace, dj0.codevalue, OLD.studentusi, dj1.studentuniqueid,
+ OLD.consenttoevaluationreceiveddate, OLD.educationorganizationid, OLD.programeducationorganizationid, OLD.programname, OLD.programtypedescriptorid, dj0.namespace, dj0.codevalue, OLD.studentusi, dj1.studentuniqueid,
OLD.id, OLD.discriminator, nextval('changes.changeversionsequence'));
RETURN NULL;
diff --git a/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/PgSql/Structure/Ods/RecordOwnership/0010-AddColumnOwnershipTokenForTable.sql b/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/PgSql/Structure/Ods/RecordOwnership/0010-AddColumnOwnershipTokenForTable.sql
index 0729fd1193..ff6d05ac4c 100644
--- a/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/PgSql/Structure/Ods/RecordOwnership/0010-AddColumnOwnershipTokenForTable.sql
+++ b/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/PgSql/Structure/Ods/RecordOwnership/0010-AddColumnOwnershipTokenForTable.sql
@@ -9,10 +9,16 @@ ALTER TABLE edfi.AccountabilityRating ADD CreatedByOwnershipTokenId SMALLINT NUL
ALTER TABLE edfi.Assessment ADD CreatedByOwnershipTokenId SMALLINT NULL;
+ALTER TABLE edfi.AssessmentAdministration ADD CreatedByOwnershipTokenId SMALLINT NULL;
+
+ALTER TABLE edfi.AssessmentBatteryPart ADD CreatedByOwnershipTokenId SMALLINT NULL;
+
ALTER TABLE edfi.AssessmentItem ADD CreatedByOwnershipTokenId SMALLINT NULL;
ALTER TABLE edfi.AssessmentScoreRangeLearningStandard ADD CreatedByOwnershipTokenId SMALLINT NULL;
+ALTER TABLE edfi.AssesssmentAdministrationParticipation ADD CreatedByOwnershipTokenId SMALLINT NULL;
+
ALTER TABLE edfi.BalanceSheetDimension ADD CreatedByOwnershipTokenId SMALLINT NULL;
ALTER TABLE edfi.BellSchedule ADD CreatedByOwnershipTokenId SMALLINT NULL;
@@ -171,6 +177,10 @@ ALTER TABLE edfi.StudentAssessment ADD CreatedByOwnershipTokenId SMALLINT NULL;
ALTER TABLE edfi.StudentAssessmentEducationOrganizationAssociation ADD CreatedByOwnershipTokenId SMALLINT NULL;
+ALTER TABLE edfi.StudentAssessmentRegistration ADD CreatedByOwnershipTokenId SMALLINT NULL;
+
+ALTER TABLE edfi.StudentAssessmentRegistrationBatteryPartAssociation ADD CreatedByOwnershipTokenId SMALLINT NULL;
+
ALTER TABLE edfi.StudentCohortAssociation ADD CreatedByOwnershipTokenId SMALLINT NULL;
ALTER TABLE edfi.StudentCompetencyObjective ADD CreatedByOwnershipTokenId SMALLINT NULL;
@@ -181,6 +191,8 @@ ALTER TABLE edfi.StudentDisciplineIncidentBehaviorAssociation ADD CreatedByOwner
ALTER TABLE edfi.StudentDisciplineIncidentNonOffenderAssociation ADD CreatedByOwnershipTokenId SMALLINT NULL;
+ALTER TABLE edfi.StudentEducationOrganizationAssessmentAccommodation ADD CreatedByOwnershipTokenId SMALLINT NULL;
+
ALTER TABLE edfi.StudentEducationOrganizationAssociation ADD CreatedByOwnershipTokenId SMALLINT NULL;
ALTER TABLE edfi.StudentEducationOrganizationResponsibilityAssociation ADD CreatedByOwnershipTokenId SMALLINT NULL;
diff --git a/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/Schemas/Ed-Fi-Core.xsd b/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/Schemas/Ed-Fi-Core.xsd
index 3643b45cae..74ed2a5922 100644
--- a/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/Schemas/Ed-Fi-Core.xsd
+++ b/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/Schemas/Ed-Fi-Core.xsd
@@ -241,6 +241,74 @@
+
+
+ The anticipated administration of an assessment under the purview of an education organization.
+
+ Domain Entity
+
+
+
+
+
+
+
+ A reference to the education organization which contracts for or administers an assessment.
+
+
+
+
+ A reference to the assessment.
+
+
+
+
+ The title or name of the assessment in the context of its administration.
+
+
+
+
+ The anticipated dates for the assessment or administration window.
+
+
+
+
+ A reference to the parts of the assessment battery that are offered in this administration of the assessment.
+
+
+
+
+
+
+
+
+ The parts organized for administering an assessessment which together provide a comprehensive assessment of the students.
+
+ Domain Entity
+
+
+
+
+
+
+
+ A reference to the assessment.
+
+
+
+
+ The name of the part of an assessment battery.
+
+
+
+
+ A reference to the objective assessment(s) that are administered by the assessment battery part.
+
+
+
+
+
+
This entity represents one of many single measures that make up an assessment.
@@ -360,6 +428,35 @@
+
+
+ Identifies the point of contact for the administration of an assessment under the purview of an education organization.
+
+ Domain Entity
+
+
+
+
+
+
+
+ A reference to the assessment administration for which participation is being indicated.
+
+
+
+
+ A reference to the education organization for which participation is being indicated.
+
+
+
+
+ Pre-identified contacts for education organizations administering the assessment.
+
+
+
+
+
+
The NCES balance sheet accounting dimension, used to track financial transactions for each fund. These financial statements only report assets, deferred outflows of resources, liabilities, deferred inflows of resources, and equity accounts. The statements are considered snapshots of how these accounts stand as of a certain point in time.
@@ -4676,6 +4773,79 @@
+
+
+ Identifies an assessment registration that a student is expected to participate in including the testing organization, reporting organization and assessment delivery details.
+
+ Domain Entity
+
+
+
+
+
+
+
+ A reference to the expected administration of an assessment.
+
+
+
+
+ A reference to the attending student education organization association.
+
+
+
+
+ A reference to the attending student school association that is active during the period of administration.
+
+
+
+
+ A reference to the education organization expected to administer the assessment.
+
+
+
+
+ A reference to the education organization which should receive the results of the assessment.
+
+
+
+
+ A reference to the accommodations expected for administering the assessment.
+
+
+
+
+ The special variation(s) to be used in how assessments (in general) are presented, how it is administered, or how the test taker is allowed to respond. This generally refers to changes that do not substantially alter what the examination measures. The proper use of accommodations does not substantially change academic level or performance criteria.
+
+ AccommodationDescriptor
+
+
+
+
+
+ The environment or format in which the assessment is expected to be administered.
+
+ PlatformTypeDescriptor
+
+
+
+
+
+ The grade level or primary instructional level at which the student is to be assessed.
+
+ GradeLevelDescriptor
+
+
+
+
+
+ Key/value pairs which may be used to facilitate customization of an assessment or to support vendor reporting/analysis.
+
+
+
+
+
+
This entity represents the competency assessed or evaluated for the student against a specific competency objective.
@@ -4730,6 +4900,38 @@
+
+
+ The accommodation(s) required or expected for administering assessments as determined by the education organization.
+
+ Domain Entity
+
+
+
+
+
+
+
+ A reference to the education organization determining the student's accommodations required for assessments.
+
+
+
+
+ Reference to the student associated with the assessment.
+
+
+
+
+ The special variation(s) to be used in how assessments (in general) are presented, how it is administered, or how the test taker is allowed to respond. This generally refers to changes that do not substantially alter what the examination measures. The proper use of accommodations does not substantially change academic level or performance criteria.
+
+ AccommodationDescriptor
+
+
+
+
+
+
+
This entity holds a student's grade or competency level for a gradebook entry.
@@ -7348,6 +7550,17 @@
+
+
+ This descriptor defines the reason(s) why student qualifies for Section 504 consideration.
+
+ Descriptor
+
+
+
+
+
+
This descriptor defines characteristics of a Section, such as whether attendance is taken and the Section is graded.
@@ -8419,6 +8632,38 @@
+
+
+ The association to the part(s) of the assessment battery that the student is to be tested for this administration of the assessment.
+
+ Association
+
+
+
+
+
+
+
+ A reference to the registration that indicates the student is expected to participate in particular assessment.
+
+
+
+
+ A reference to the part of the assessment battery that the student is to be tested for this administration of the assessment.
+
+
+
+
+ The special variation(s) to be used for the specific part of the assessment battery on how is presented, how it is administered, or how the test taker is allowed to respond.
+
+ AccommodationDescriptor
+
+
+
+
+
+
+
This association represents the cohort(s) for which a student is designated.
@@ -9315,6 +9560,48 @@
+
+
+ This association identifies student that qualifies for the Section 504 of the Rehabilitation Act of 1973.
+
+ Association
+
+
+
+
+
+
+
+ Indicates whether student has a disability, either temporary or permenant, that qualifies student for Section 504 consideration. Selection of FALSE for this boolean is equivalent to marking student as 'Did Not Qualify'.
+
+
+
+
+ Indicates whether student has a Section 504 accommodation plan.
+
+
+
+
+ Defines one or more disabilities student has that qualifies them for a Section 504 plan.
+
+ Section504DisabilityTypeDescriptor
+
+
+
+
+
+ The month, day, and year on which the meeting with student's parent/guardian held to discuss the 504 eligibility of the student.
+
+
+
+
+ The month, day, and year on which the Section 504 eligibility decision is made.
+
+
+
+
+
+
This association indicates the course sections to which a student is assigned.
@@ -9936,19 +10223,102 @@
- The title of the rating.
+ The title of the rating.
+
+
+
+
+ The school year for which the accountability rating is assessed.
+
+
+
+
+
+
+ Provides alternative references for an AccountabilityRating. Use XML IDREF to reference a record that is included in the interchange. Use the identity type to look up a record that was loaded previously.
+
+ Extended Reference
+
+
+
+
+
+
+
+ Identity of an AccountabilityRating.
+
+
+
+
+
+
+
+
+ Identity of an AssessmentAdministration.
+
+ Identity
+
+
+
+
+
+ A reference to the education organization which contracts for or administers an assessment.
+
+
+
+
+ A reference to the assessment.
+
+
+
+
+ The title or name of the assessment in the context of its administration.
+
+
+
+
+
+
+ Provides alternative references for an AssessmentAdministration. Use XML IDREF to reference a record that is included in the interchange. Use the identity type to look up a record that was loaded previously.
+
+ Extended Reference
+
+
+
+
+
+
+
+ Identity of an AssessmentAdministration.
+
+
+
+
+
+
+
+
+ Identity of an AssessmentBatteryPart.
+
+ Identity
+
+
+
+
+
+ A reference to the assessment.
-
+
- The school year for which the accountability rating is assessed.
+ The name of the part of an assessment battery.
-
+
- Provides alternative references for an AccountabilityRating. Use XML IDREF to reference a record that is included in the interchange. Use the identity type to look up a record that was loaded previously.
+ Provides alternative references for an AssessmentBatteryPart. Use XML IDREF to reference a record that is included in the interchange. Use the identity type to look up a record that was loaded previously.
Extended Reference
@@ -9956,9 +10326,9 @@
-
+
- Identity of an AccountabilityRating.
+ Identity of an AssessmentBatteryPart.
@@ -10095,6 +10465,45 @@
+
+
+ Identity of an AssesssmentAdministrationParticipation.
+
+ Identity
+
+
+
+
+
+ A reference to the assessment administration for which participation is being indicated.
+
+
+
+
+ A reference to the education organization for which participation is being indicated.
+
+
+
+
+
+
+ Provides alternative references for an AssesssmentAdministrationParticipation. Use XML IDREF to reference a record that is included in the interchange. Use the identity type to look up a record that was loaded previously.
+
+ Extended Reference
+
+
+
+
+
+
+
+ Identity of an AssesssmentAdministrationParticipation.
+
+
+
+
+
+
Identity of a BalanceSheetDimension.
@@ -14113,6 +14522,84 @@
+
+
+ Identity of a StudentAssessmentRegistrationBatteryPartAssociation.
+
+ Identity
+
+
+
+
+
+ A reference to the registration that indicates the student is expected to participate in particular assessment.
+
+
+
+
+ A reference to the part of the assessment battery that the student is to be tested for this administration of the assessment.
+
+
+
+
+
+
+ Provides alternative references for a StudentAssessmentRegistrationBatteryPartAssociation. Use XML IDREF to reference a record that is included in the interchange. Use the identity type to look up a record that was loaded previously.
+
+ Extended Reference
+
+
+
+
+
+
+
+ Identity of a StudentAssessmentRegistrationBatteryPartAssociation.
+
+
+
+
+
+
+
+
+ Identity of a StudentAssessmentRegistration.
+
+ Identity
+
+
+
+
+
+ A reference to the expected administration of an assessment.
+
+
+
+
+ A reference to the attending student education organization association.
+
+
+
+
+
+
+ Provides alternative references for a StudentAssessmentRegistration. Use XML IDREF to reference a record that is included in the interchange. Use the identity type to look up a record that was loaded previously.
+
+ Extended Reference
+
+
+
+
+
+
+
+ Identity of a StudentAssessmentRegistration.
+
+
+
+
+
+
Identity of a StudentCohortAssociation.
@@ -14375,6 +14862,45 @@
+
+
+ Identity of a StudentEducationOrganizationAssessmentAccommodation.
+
+ Identity
+
+
+
+
+
+ A reference to the education organization determining the student's accommodations required for assessments.
+
+
+
+
+ Reference to the student associated with the assessment.
+
+
+
+
+
+
+ Provides alternative references for a StudentEducationOrganizationAssessmentAccommodation. Use XML IDREF to reference a record that is included in the interchange. Use the identity type to look up a record that was loaded previously.
+
+ Extended Reference
+
+
+
+
+
+
+
+ Identity of a StudentEducationOrganizationAssessmentAccommodation.
+
+
+
+
+
+
Encapsulates primary attributes that can be used to look up the identity of a StudentEducationOrganizationAssociation.
@@ -15217,6 +15743,55 @@
+
+
+ Identity of a StudentSection504ProgramAssociation.
+
+ Identity
+
+
+
+
+
+ The student associated with the program.
+
+
+
+
+ The program associated with the student.
+
+
+
+
+ The earliest date the student is involved with the program. Typically, this is the date the student becomes eligible for the program. Note: Date interpretation may vary. Ed-Fi recommends inclusive dates, but states may define dates as inclusive or exclusive. For calculations, align with local guidelines.
+
+
+
+
+ The education organization where the student is participating in or receiving the program services.
+
+
+
+
+
+
+ Provides alternative references for a StudentSection504ProgramAssociation. Use XML IDREF to reference a record that is included in the interchange. Use the identity type to look up a record that was loaded previously.
+
+ Extended Reference
+
+
+
+
+
+
+
+ Identity of a StudentSection504ProgramAssociation.
+
+
+
+
+
+
Identity of a StudentSectionAssociation.
@@ -17574,6 +18149,15 @@
+
+
+ This descriptor defines the reason(s) why student qualifies for Section 504 consideration.
+
+ Extended Descriptor Reference
+
+
+
+
This descriptor defines characteristics of a Section, such as whether attendance is taken and the Section is graded.
@@ -18125,6 +18709,61 @@
+
+
+ Short list of information which identifies the point of contact for the administration of an assessment within an education organization.
+
+ Common
+
+
+
+
+
+ A reference to the education organization.
+
+
+
+
+ The email address for the contact.
+
+
+
+
+ The contact's first name.
+
+
+
+
+ The contact's last name.
+
+
+
+
+ The login ID for the user; used for security access control interface.
+
+
+
+
+
+
+ An untyped key and value pair that is used to provide additional information needed for vendor regisration, administration, or reporting.
+
+ Common
+
+
+
+
+
+ An agreed upon identifier for the custom information.
+
+
+
+
+ Custom value for the indicated CustomizationKey.
+
+
+
+
A unique number or alphanumeric code assigned to an assessment by a school, school system, a state, or other agency or entity.
@@ -21288,6 +21927,17 @@
+
+
+ The title or name of the assessment in the context of its administration.
+
+ Simple
+
+
+
+
+
+
used for the bell schedule, another name for day (e.g., Blue day, Red day).
@@ -21310,6 +21960,17 @@
+
+
+ The name of the part of a assessment battery.
+
+ Simple
+
+
+
+
+
+
The AssessmentFamily an Assessment is a member of.
@@ -21721,6 +22382,28 @@
+
+
+ An agreed upon identifier for the custom information.
+
+ Simple
+
+
+
+
+
+
+
+
+ Custom value for the indicated CustomizationKey.
+
+ Simple
+
+
+
+
+
+
The department or suborganization the employee/contractor is associated with in the Education Organization.
diff --git a/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/Schemas/Interchange-Descriptors.xsd b/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/Schemas/Interchange-Descriptors.xsd
index b83cf2d6f7..4f6fce286a 100644
--- a/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/Schemas/Interchange-Descriptors.xsd
+++ b/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/Schemas/Interchange-Descriptors.xsd
@@ -184,6 +184,7 @@ The Descriptor interchange is used to describe metadata about the descriptors an
+
diff --git a/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/Schemas/SchemaAnnotation.xsd b/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/Schemas/SchemaAnnotation.xsd
index c4fd53732f..8bb4a33d45 100644
--- a/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/Schemas/SchemaAnnotation.xsd
+++ b/Application/EdFi.Ods.Standard/Standard/5.2.0/Artifacts/Schemas/SchemaAnnotation.xsd
@@ -188,6 +188,7 @@
+
diff --git a/Postman Test Suite/Ed-Fi ODS-API Custom View-Based Authorization Test Suite.postman_collection.json b/Postman Test Suite/Ed-Fi ODS-API Custom View-Based Authorization Test Suite.postman_collection.json
index 267cec7da2..4afe364ead 100644
--- a/Postman Test Suite/Ed-Fi ODS-API Custom View-Based Authorization Test Suite.postman_collection.json
+++ b/Postman Test Suite/Ed-Fi ODS-API Custom View-Based Authorization Test Suite.postman_collection.json
@@ -2065,14 +2065,21 @@
"\r",
"const item = items[0];\r",
"\r",
- "pm.test(\"Should return an entry with the key values of the item previously added and deleted.\", () => {\r",
- " pm.expect(item.keyValues).to.deep.equal({\r",
+ "const expectedKeyValues = {\r",
" \"consentToEvaluationReceivedDate\": \"2024-08-02\",\r",
" \"studentUniqueId\": \"ABC123\",\r",
" \"educationOrganizationId\": 255901,\r",
" \"programName\": \"Bilingual\",\r",
- " \"programTypeDescriptor\": \"uri://ed-fi.org/ProgramTypeDescriptor#Bilingual\",\r",
- " });\r",
+ " \"programTypeDescriptor\": \"uri://ed-fi.org/ProgramTypeDescriptor#Bilingual\"\r",
+ "};\r",
+ "\r",
+ "// Check if `programEducationOrganizationId` exists in the response\r",
+ "if (item.keyValues.hasOwnProperty(\"programEducationOrganizationId\")) {\r",
+ " expectedKeyValues.programEducationOrganizationId = 255901;\r",
+ "}\r",
+ "\r",
+ "pm.test(\"Should return an entry with the key values of the item previously added and deleted.\", () => {\r",
+ " pm.expect(item.keyValues).to.deep.equal(expectedKeyValues);\r",
"});"
],
"type": "text/javascript",
diff --git a/Utilities/CodeGeneration/EdFi.Ods.CodeGen.Tests/Approval/5.2.0/DataStandard_510_ApprovalTests.Generated_File_List.Standard.5.1.0.approved.txt b/Utilities/CodeGeneration/EdFi.Ods.CodeGen.Tests/Approval/5.2.0/DataStandard_510_ApprovalTests.Generated_File_List.Standard.5.1.0.approved.txt
deleted file mode 100644
index 5f282702bb..0000000000
--- a/Utilities/CodeGeneration/EdFi.Ods.CodeGen.Tests/Approval/5.2.0/DataStandard_510_ApprovalTests.Generated_File_List.Standard.5.1.0.approved.txt
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/Utilities/CodeGeneration/EdFi.Ods.CodeGen.Tests/Approval/5.2.0/DataStandard_510_ApprovalTests.Generated_File_List.Standard.5.2.0.approved.txt b/Utilities/CodeGeneration/EdFi.Ods.CodeGen.Tests/Approval/5.2.0/DataStandard_510_ApprovalTests.Generated_File_List.Standard.5.2.0.approved.txt
deleted file mode 100644
index 5f282702bb..0000000000
--- a/Utilities/CodeGeneration/EdFi.Ods.CodeGen.Tests/Approval/5.2.0/DataStandard_510_ApprovalTests.Generated_File_List.Standard.5.2.0.approved.txt
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/Utilities/CodeGeneration/EdFi.Ods.CodeGen.Tests/Approval/5.2.0/DataStandard_520_ApprovalTests.Verify.Standard_Std_5.2.0_Controllers_Controllers.generated.approved.cs b/Utilities/CodeGeneration/EdFi.Ods.CodeGen.Tests/Approval/5.2.0/DataStandard_520_ApprovalTests.Verify.Standard_Std_5.2.0_Controllers_Controllers.generated.approved.cs
index 21dbd09261..41cba909a6 100644
--- a/Utilities/CodeGeneration/EdFi.Ods.CodeGen.Tests/Approval/5.2.0/DataStandard_520_ApprovalTests.Verify.Standard_Std_5.2.0_Controllers_Controllers.generated.approved.cs
+++ b/Utilities/CodeGeneration/EdFi.Ods.CodeGen.Tests/Approval/5.2.0/DataStandard_520_ApprovalTests.Verify.Standard_Std_5.2.0_Controllers_Controllers.generated.approved.cs
@@ -542,6 +542,73 @@ protected override void MapAll(Api.Common.Models.Requests.Assessments.EdFi.Asses
}
}
+namespace EdFi.Ods.Api.Services.Controllers.AssessmentAdministrations.EdFi
+{
+ [ApiExplorerSettings(IgnoreApi = true)]
+ [ExcludeFromCodeCoverage]
+ [ApiController]
+ [Authorize]
+ [ApplyOdsRouteRootTemplate, Route($"{RouteConstants.DataManagementRoutePrefix}/ed-fi/assessmentAdministrations")]
+ public partial class AssessmentAdministrationsController : DataManagementControllerBase<
+ Api.Common.Models.Resources.AssessmentAdministration.EdFi.AssessmentAdministration,
+ Entities.Common.EdFi.IAssessmentAdministration,
+ Entities.NHibernate.AssessmentAdministrationAggregate.EdFi.AssessmentAdministration,
+ Api.Common.Models.Requests.AssessmentAdministrations.EdFi.AssessmentAdministrationPut,
+ Api.Common.Models.Requests.AssessmentAdministrations.EdFi.AssessmentAdministrationPost,
+ Api.Common.Models.Requests.AssessmentAdministrations.EdFi.AssessmentAdministrationDelete,
+ Api.Common.Models.Requests.AssessmentAdministrations.EdFi.AssessmentAdministrationGetByExample>
+ {
+ public AssessmentAdministrationsController(IPipelineFactory pipelineFactory, IEdFiProblemDetailsProvider problemDetailsProvider, IDefaultPageSizeLimitProvider defaultPageSizeLimitProvider, ApiSettings apiSettings, IContextProvider profileContentTypeContextProvider, IContextProvider dataManagementResourceContextProvider, ILogContextAccessor logContextAccessor)
+ : base(pipelineFactory, problemDetailsProvider, defaultPageSizeLimitProvider, apiSettings, profileContentTypeContextProvider, dataManagementResourceContextProvider, logContextAccessor)
+ {
+ }
+
+ protected override void MapAll(Api.Common.Models.Requests.AssessmentAdministrations.EdFi.AssessmentAdministrationGetByExample request, Entities.Common.EdFi.IAssessmentAdministration specification)
+ {
+ // Copy all existing values
+ specification.SuspendReferenceAssignmentCheck();
+ specification.AdministrationIdentifier = request.AdministrationIdentifier;
+ specification.AssessmentIdentifier = request.AssessmentIdentifier;
+ specification.AssigningEducationOrganizationId = request.AssigningEducationOrganizationId;
+ specification.Id = request.Id;
+ specification.Namespace = request.Namespace;
+ }
+ }
+}
+
+namespace EdFi.Ods.Api.Services.Controllers.AssessmentBatteryParts.EdFi
+{
+ [ApiExplorerSettings(IgnoreApi = true)]
+ [ExcludeFromCodeCoverage]
+ [ApiController]
+ [Authorize]
+ [ApplyOdsRouteRootTemplate, Route($"{RouteConstants.DataManagementRoutePrefix}/ed-fi/assessmentBatteryParts")]
+ public partial class AssessmentBatteryPartsController : DataManagementControllerBase<
+ Api.Common.Models.Resources.AssessmentBatteryPart.EdFi.AssessmentBatteryPart,
+ Entities.Common.EdFi.IAssessmentBatteryPart,
+ Entities.NHibernate.AssessmentBatteryPartAggregate.EdFi.AssessmentBatteryPart,
+ Api.Common.Models.Requests.AssessmentBatteryParts.EdFi.AssessmentBatteryPartPut,
+ Api.Common.Models.Requests.AssessmentBatteryParts.EdFi.AssessmentBatteryPartPost,
+ Api.Common.Models.Requests.AssessmentBatteryParts.EdFi.AssessmentBatteryPartDelete,
+ Api.Common.Models.Requests.AssessmentBatteryParts.EdFi.AssessmentBatteryPartGetByExample>
+ {
+ public AssessmentBatteryPartsController(IPipelineFactory pipelineFactory, IEdFiProblemDetailsProvider problemDetailsProvider, IDefaultPageSizeLimitProvider defaultPageSizeLimitProvider, ApiSettings apiSettings, IContextProvider profileContentTypeContextProvider, IContextProvider dataManagementResourceContextProvider, ILogContextAccessor logContextAccessor)
+ : base(pipelineFactory, problemDetailsProvider, defaultPageSizeLimitProvider, apiSettings, profileContentTypeContextProvider, dataManagementResourceContextProvider, logContextAccessor)
+ {
+ }
+
+ protected override void MapAll(Api.Common.Models.Requests.AssessmentBatteryParts.EdFi.AssessmentBatteryPartGetByExample request, Entities.Common.EdFi.IAssessmentBatteryPart specification)
+ {
+ // Copy all existing values
+ specification.SuspendReferenceAssignmentCheck();
+ specification.AssessmentBatteryPartName = request.AssessmentBatteryPartName;
+ specification.AssessmentIdentifier = request.AssessmentIdentifier;
+ specification.Id = request.Id;
+ specification.Namespace = request.Namespace;
+ }
+ }
+}
+
namespace EdFi.Ods.Api.Services.Controllers.AssessmentCategoryDescriptors.EdFi
{
[ApiExplorerSettings(IgnoreApi = true)]
@@ -840,6 +907,41 @@ protected override void MapAll(Api.Common.Models.Requests.AssessmentScoreRangeLe
}
}
+namespace EdFi.Ods.Api.Services.Controllers.AssesssmentAdministrationParticipations.EdFi
+{
+ [ApiExplorerSettings(IgnoreApi = true)]
+ [ExcludeFromCodeCoverage]
+ [ApiController]
+ [Authorize]
+ [ApplyOdsRouteRootTemplate, Route($"{RouteConstants.DataManagementRoutePrefix}/ed-fi/assesssmentAdministrationParticipations")]
+ public partial class AssesssmentAdministrationParticipationsController : DataManagementControllerBase<
+ Api.Common.Models.Resources.AssesssmentAdministrationParticipation.EdFi.AssesssmentAdministrationParticipation,
+ Entities.Common.EdFi.IAssesssmentAdministrationParticipation,
+ Entities.NHibernate.AssesssmentAdministrationParticipationAggregate.EdFi.AssesssmentAdministrationParticipation,
+ Api.Common.Models.Requests.AssesssmentAdministrationParticipations.EdFi.AssesssmentAdministrationParticipationPut,
+ Api.Common.Models.Requests.AssesssmentAdministrationParticipations.EdFi.AssesssmentAdministrationParticipationPost,
+ Api.Common.Models.Requests.AssesssmentAdministrationParticipations.EdFi.AssesssmentAdministrationParticipationDelete,
+ Api.Common.Models.Requests.AssesssmentAdministrationParticipations.EdFi.AssesssmentAdministrationParticipationGetByExample>
+ {
+ public AssesssmentAdministrationParticipationsController(IPipelineFactory pipelineFactory, IEdFiProblemDetailsProvider problemDetailsProvider, IDefaultPageSizeLimitProvider defaultPageSizeLimitProvider, ApiSettings apiSettings, IContextProvider profileContentTypeContextProvider, IContextProvider dataManagementResourceContextProvider, ILogContextAccessor logContextAccessor)
+ : base(pipelineFactory, problemDetailsProvider, defaultPageSizeLimitProvider, apiSettings, profileContentTypeContextProvider, dataManagementResourceContextProvider, logContextAccessor)
+ {
+ }
+
+ protected override void MapAll(Api.Common.Models.Requests.AssesssmentAdministrationParticipations.EdFi.AssesssmentAdministrationParticipationGetByExample request, Entities.Common.EdFi.IAssesssmentAdministrationParticipation specification)
+ {
+ // Copy all existing values
+ specification.SuspendReferenceAssignmentCheck();
+ specification.AdministrationIdentifier = request.AdministrationIdentifier;
+ specification.AssessmentIdentifier = request.AssessmentIdentifier;
+ specification.AssigningEducationOrganizationId = request.AssigningEducationOrganizationId;
+ specification.Id = request.Id;
+ specification.Namespace = request.Namespace;
+ specification.ParticipatingEducationOrganizationId = request.ParticipatingEducationOrganizationId;
+ }
+ }
+}
+
namespace EdFi.Ods.Api.Services.Controllers.AssignmentLateStatusDescriptors.EdFi
{
[ApiExplorerSettings(IgnoreApi = true)]
@@ -9109,6 +9211,43 @@ protected override void MapAll(Api.Common.Models.Requests.Sections.EdFi.SectionG
}
}
+namespace EdFi.Ods.Api.Services.Controllers.Section504DisabilityTypeDescriptors.EdFi
+{
+ [ApiExplorerSettings(IgnoreApi = true)]
+ [ExcludeFromCodeCoverage]
+ [ApiController]
+ [Authorize]
+ [ApplyOdsRouteRootTemplate, Route($"{RouteConstants.DataManagementRoutePrefix}/ed-fi/section504DisabilityTypeDescriptors")]
+ public partial class Section504DisabilityTypeDescriptorsController : DataManagementControllerBase<
+ Api.Common.Models.Resources.Section504DisabilityTypeDescriptor.EdFi.Section504DisabilityTypeDescriptor,
+ Entities.Common.EdFi.ISection504DisabilityTypeDescriptor,
+ Entities.NHibernate.Section504DisabilityTypeDescriptorAggregate.EdFi.Section504DisabilityTypeDescriptor,
+ Api.Common.Models.Requests.Section504DisabilityTypeDescriptors.EdFi.Section504DisabilityTypeDescriptorPut,
+ Api.Common.Models.Requests.Section504DisabilityTypeDescriptors.EdFi.Section504DisabilityTypeDescriptorPost,
+ Api.Common.Models.Requests.Section504DisabilityTypeDescriptors.EdFi.Section504DisabilityTypeDescriptorDelete,
+ Api.Common.Models.Requests.Section504DisabilityTypeDescriptors.EdFi.Section504DisabilityTypeDescriptorGetByExample>
+ {
+ public Section504DisabilityTypeDescriptorsController(IPipelineFactory pipelineFactory, IEdFiProblemDetailsProvider problemDetailsProvider, IDefaultPageSizeLimitProvider defaultPageSizeLimitProvider, ApiSettings apiSettings, IContextProvider profileContentTypeContextProvider, IContextProvider dataManagementResourceContextProvider, ILogContextAccessor logContextAccessor)
+ : base(pipelineFactory, problemDetailsProvider, defaultPageSizeLimitProvider, apiSettings, profileContentTypeContextProvider, dataManagementResourceContextProvider, logContextAccessor)
+ {
+ }
+
+ protected override void MapAll(Api.Common.Models.Requests.Section504DisabilityTypeDescriptors.EdFi.Section504DisabilityTypeDescriptorGetByExample request, Entities.Common.EdFi.ISection504DisabilityTypeDescriptor specification)
+ {
+ // Copy all existing values
+ specification.SuspendReferenceAssignmentCheck();
+ specification.CodeValue = request.CodeValue;
+ specification.Description = request.Description;
+ specification.EffectiveBeginDate = request.EffectiveBeginDate;
+ specification.EffectiveEndDate = request.EffectiveEndDate;
+ specification.Id = request.Id;
+ specification.Namespace = request.Namespace;
+ specification.Section504DisabilityTypeDescriptorId = request.Section504DisabilityTypeDescriptorId;
+ specification.ShortDescription = request.ShortDescription;
+ }
+ }
+}
+
namespace EdFi.Ods.Api.Services.Controllers.SectionAttendanceTakenEvents.EdFi
{
[ApiExplorerSettings(IgnoreApi = true)]
@@ -10381,6 +10520,85 @@ protected override void MapAll(Api.Common.Models.Requests.StudentAssessmentEduca
}
}
+namespace EdFi.Ods.Api.Services.Controllers.StudentAssessmentRegistrations.EdFi
+{
+ [ApiExplorerSettings(IgnoreApi = true)]
+ [ExcludeFromCodeCoverage]
+ [ApiController]
+ [Authorize]
+ [ApplyOdsRouteRootTemplate, Route($"{RouteConstants.DataManagementRoutePrefix}/ed-fi/studentAssessmentRegistrations")]
+ public partial class StudentAssessmentRegistrationsController : DataManagementControllerBase<
+ Api.Common.Models.Resources.StudentAssessmentRegistration.EdFi.StudentAssessmentRegistration,
+ Entities.Common.EdFi.IStudentAssessmentRegistration,
+ Entities.NHibernate.StudentAssessmentRegistrationAggregate.EdFi.StudentAssessmentRegistration,
+ Api.Common.Models.Requests.StudentAssessmentRegistrations.EdFi.StudentAssessmentRegistrationPut,
+ Api.Common.Models.Requests.StudentAssessmentRegistrations.EdFi.StudentAssessmentRegistrationPost,
+ Api.Common.Models.Requests.StudentAssessmentRegistrations.EdFi.StudentAssessmentRegistrationDelete,
+ Api.Common.Models.Requests.StudentAssessmentRegistrations.EdFi.StudentAssessmentRegistrationGetByExample>
+ {
+ public StudentAssessmentRegistrationsController(IPipelineFactory pipelineFactory, IEdFiProblemDetailsProvider problemDetailsProvider, IDefaultPageSizeLimitProvider defaultPageSizeLimitProvider, ApiSettings apiSettings, IContextProvider profileContentTypeContextProvider, IContextProvider dataManagementResourceContextProvider, ILogContextAccessor logContextAccessor)
+ : base(pipelineFactory, problemDetailsProvider, defaultPageSizeLimitProvider, apiSettings, profileContentTypeContextProvider, dataManagementResourceContextProvider, logContextAccessor)
+ {
+ }
+
+ protected override void MapAll(Api.Common.Models.Requests.StudentAssessmentRegistrations.EdFi.StudentAssessmentRegistrationGetByExample request, Entities.Common.EdFi.IStudentAssessmentRegistration specification)
+ {
+ // Copy all existing values
+ specification.SuspendReferenceAssignmentCheck();
+ specification.AdministrationIdentifier = request.AdministrationIdentifier;
+ specification.AssessmentGradeLevelDescriptor = request.AssessmentGradeLevelDescriptor;
+ specification.AssessmentIdentifier = request.AssessmentIdentifier;
+ specification.AssigningEducationOrganizationId = request.AssigningEducationOrganizationId;
+ specification.EducationOrganizationId = request.EducationOrganizationId;
+ specification.EntryDate = request.EntryDate;
+ specification.Id = request.Id;
+ specification.Namespace = request.Namespace;
+ specification.PlatformTypeDescriptor = request.PlatformTypeDescriptor;
+ specification.ReportingEducationOrganizationId = request.ReportingEducationOrganizationId;
+ specification.SchoolId = request.SchoolId;
+ specification.StudentUniqueId = request.StudentUniqueId;
+ specification.TestingEducationOrganizationId = request.TestingEducationOrganizationId;
+ }
+ }
+}
+
+namespace EdFi.Ods.Api.Services.Controllers.StudentAssessmentRegistrationBatteryPartAssociations.EdFi
+{
+ [ApiExplorerSettings(IgnoreApi = true)]
+ [ExcludeFromCodeCoverage]
+ [ApiController]
+ [Authorize]
+ [ApplyOdsRouteRootTemplate, Route($"{RouteConstants.DataManagementRoutePrefix}/ed-fi/studentAssessmentRegistrationBatteryPartAssociations")]
+ public partial class StudentAssessmentRegistrationBatteryPartAssociationsController : DataManagementControllerBase<
+ Api.Common.Models.Resources.StudentAssessmentRegistrationBatteryPartAssociation.EdFi.StudentAssessmentRegistrationBatteryPartAssociation,
+ Entities.Common.EdFi.IStudentAssessmentRegistrationBatteryPartAssociation,
+ Entities.NHibernate.StudentAssessmentRegistrationBatteryPartAssociationAggregate.EdFi.StudentAssessmentRegistrationBatteryPartAssociation,
+ Api.Common.Models.Requests.StudentAssessmentRegistrationBatteryPartAssociations.EdFi.StudentAssessmentRegistrationBatteryPartAssociationPut,
+ Api.Common.Models.Requests.StudentAssessmentRegistrationBatteryPartAssociations.EdFi.StudentAssessmentRegistrationBatteryPartAssociationPost,
+ Api.Common.Models.Requests.StudentAssessmentRegistrationBatteryPartAssociations.EdFi.StudentAssessmentRegistrationBatteryPartAssociationDelete,
+ Api.Common.Models.Requests.StudentAssessmentRegistrationBatteryPartAssociations.EdFi.StudentAssessmentRegistrationBatteryPartAssociationGetByExample>
+ {
+ public StudentAssessmentRegistrationBatteryPartAssociationsController(IPipelineFactory pipelineFactory, IEdFiProblemDetailsProvider problemDetailsProvider, IDefaultPageSizeLimitProvider defaultPageSizeLimitProvider, ApiSettings apiSettings, IContextProvider profileContentTypeContextProvider, IContextProvider dataManagementResourceContextProvider, ILogContextAccessor logContextAccessor)
+ : base(pipelineFactory, problemDetailsProvider, defaultPageSizeLimitProvider, apiSettings, profileContentTypeContextProvider, dataManagementResourceContextProvider, logContextAccessor)
+ {
+ }
+
+ protected override void MapAll(Api.Common.Models.Requests.StudentAssessmentRegistrationBatteryPartAssociations.EdFi.StudentAssessmentRegistrationBatteryPartAssociationGetByExample request, Entities.Common.EdFi.IStudentAssessmentRegistrationBatteryPartAssociation specification)
+ {
+ // Copy all existing values
+ specification.SuspendReferenceAssignmentCheck();
+ specification.AdministrationIdentifier = request.AdministrationIdentifier;
+ specification.AssessmentBatteryPartName = request.AssessmentBatteryPartName;
+ specification.AssessmentIdentifier = request.AssessmentIdentifier;
+ specification.AssigningEducationOrganizationId = request.AssigningEducationOrganizationId;
+ specification.EducationOrganizationId = request.EducationOrganizationId;
+ specification.Id = request.Id;
+ specification.Namespace = request.Namespace;
+ specification.StudentUniqueId = request.StudentUniqueId;
+ }
+ }
+}
+
namespace EdFi.Ods.Api.Services.Controllers.StudentCharacteristicDescriptors.EdFi
{
[ApiExplorerSettings(IgnoreApi = true)]
@@ -10642,6 +10860,38 @@ protected override void MapAll(Api.Common.Models.Requests.StudentDisciplineIncid
}
}
+namespace EdFi.Ods.Api.Services.Controllers.StudentEducationOrganizationAssessmentAccommodations.EdFi
+{
+ [ApiExplorerSettings(IgnoreApi = true)]
+ [ExcludeFromCodeCoverage]
+ [ApiController]
+ [Authorize]
+ [ApplyOdsRouteRootTemplate, Route($"{RouteConstants.DataManagementRoutePrefix}/ed-fi/studentEducationOrganizationAssessmentAccommodations")]
+ public partial class StudentEducationOrganizationAssessmentAccommodationsController : DataManagementControllerBase<
+ Api.Common.Models.Resources.StudentEducationOrganizationAssessmentAccommodation.EdFi.StudentEducationOrganizationAssessmentAccommodation,
+ Entities.Common.EdFi.IStudentEducationOrganizationAssessmentAccommodation,
+ Entities.NHibernate.StudentEducationOrganizationAssessmentAccommodationAggregate.EdFi.StudentEducationOrganizationAssessmentAccommodation,
+ Api.Common.Models.Requests.StudentEducationOrganizationAssessmentAccommodations.EdFi.StudentEducationOrganizationAssessmentAccommodationPut,
+ Api.Common.Models.Requests.StudentEducationOrganizationAssessmentAccommodations.EdFi.StudentEducationOrganizationAssessmentAccommodationPost,
+ Api.Common.Models.Requests.StudentEducationOrganizationAssessmentAccommodations.EdFi.StudentEducationOrganizationAssessmentAccommodationDelete,
+ Api.Common.Models.Requests.StudentEducationOrganizationAssessmentAccommodations.EdFi.StudentEducationOrganizationAssessmentAccommodationGetByExample>
+ {
+ public StudentEducationOrganizationAssessmentAccommodationsController(IPipelineFactory pipelineFactory, IEdFiProblemDetailsProvider problemDetailsProvider, IDefaultPageSizeLimitProvider defaultPageSizeLimitProvider, ApiSettings apiSettings, IContextProvider profileContentTypeContextProvider, IContextProvider dataManagementResourceContextProvider, ILogContextAccessor logContextAccessor)
+ : base(pipelineFactory, problemDetailsProvider, defaultPageSizeLimitProvider, apiSettings, profileContentTypeContextProvider, dataManagementResourceContextProvider, logContextAccessor)
+ {
+ }
+
+ protected override void MapAll(Api.Common.Models.Requests.StudentEducationOrganizationAssessmentAccommodations.EdFi.StudentEducationOrganizationAssessmentAccommodationGetByExample request, Entities.Common.EdFi.IStudentEducationOrganizationAssessmentAccommodation specification)
+ {
+ // Copy all existing values
+ specification.SuspendReferenceAssignmentCheck();
+ specification.EducationOrganizationId = request.EducationOrganizationId;
+ specification.Id = request.Id;
+ specification.StudentUniqueId = request.StudentUniqueId;
+ }
+ }
+}
+
namespace EdFi.Ods.Api.Services.Controllers.StudentEducationOrganizationAssociations.EdFi
{
[ApiExplorerSettings(IgnoreApi = true)]
@@ -11348,6 +11598,50 @@ protected override void MapAll(Api.Common.Models.Requests.StudentSchoolFoodServi
}
}
+namespace EdFi.Ods.Api.Services.Controllers.StudentSection504ProgramAssociations.EdFi
+{
+ [ApiExplorerSettings(IgnoreApi = true)]
+ [ExcludeFromCodeCoverage]
+ [ApiController]
+ [Authorize]
+ [ApplyOdsRouteRootTemplate, Route($"{RouteConstants.DataManagementRoutePrefix}/ed-fi/studentSection504ProgramAssociations")]
+ public partial class StudentSection504ProgramAssociationsController : DataManagementControllerBase<
+ Api.Common.Models.Resources.StudentSection504ProgramAssociation.EdFi.StudentSection504ProgramAssociation,
+ Entities.Common.EdFi.IStudentSection504ProgramAssociation,
+ Entities.NHibernate.StudentSection504ProgramAssociationAggregate.EdFi.StudentSection504ProgramAssociation,
+ Api.Common.Models.Requests.StudentSection504ProgramAssociations.EdFi.StudentSection504ProgramAssociationPut,
+ Api.Common.Models.Requests.StudentSection504ProgramAssociations.EdFi.StudentSection504ProgramAssociationPost,
+ Api.Common.Models.Requests.StudentSection504ProgramAssociations.EdFi.StudentSection504ProgramAssociationDelete,
+ Api.Common.Models.Requests.StudentSection504ProgramAssociations.EdFi.StudentSection504ProgramAssociationGetByExample>
+ {
+ public StudentSection504ProgramAssociationsController(IPipelineFactory pipelineFactory, IEdFiProblemDetailsProvider problemDetailsProvider, IDefaultPageSizeLimitProvider defaultPageSizeLimitProvider, ApiSettings apiSettings, IContextProvider profileContentTypeContextProvider, IContextProvider dataManagementResourceContextProvider, ILogContextAccessor logContextAccessor)
+ : base(pipelineFactory, problemDetailsProvider, defaultPageSizeLimitProvider, apiSettings, profileContentTypeContextProvider, dataManagementResourceContextProvider, logContextAccessor)
+ {
+ }
+
+ protected override void MapAll(Api.Common.Models.Requests.StudentSection504ProgramAssociations.EdFi.StudentSection504ProgramAssociationGetByExample request, Entities.Common.EdFi.IStudentSection504ProgramAssociation specification)
+ {
+ // Copy all existing values
+ specification.SuspendReferenceAssignmentCheck();
+ specification.AccommodationPlan = request.AccommodationPlan;
+ specification.BeginDate = request.BeginDate;
+ specification.EducationOrganizationId = request.EducationOrganizationId;
+ specification.EndDate = request.EndDate;
+ specification.Id = request.Id;
+ specification.ProgramEducationOrganizationId = request.ProgramEducationOrganizationId;
+ specification.ProgramName = request.ProgramName;
+ specification.ProgramTypeDescriptor = request.ProgramTypeDescriptor;
+ specification.ReasonExitedDescriptor = request.ReasonExitedDescriptor;
+ specification.Section504DisabilityTypeDescriptor = request.Section504DisabilityTypeDescriptor;
+ specification.Section504Eligibility = request.Section504Eligibility;
+ specification.Section504EligibilityDecisionDate = request.Section504EligibilityDecisionDate;
+ specification.Section504MeetingDate = request.Section504MeetingDate;
+ specification.ServedOutsideOfRegularSession = request.ServedOutsideOfRegularSession;
+ specification.StudentUniqueId = request.StudentUniqueId;
+ }
+ }
+}
+
namespace EdFi.Ods.Api.Services.Controllers.StudentSectionAssociations.EdFi
{
[ApiExplorerSettings(IgnoreApi = true)]
@@ -11527,6 +11821,7 @@ protected override void MapAll(Api.Common.Models.Requests.StudentSpecialEducatio
specification.IDEAIndicator = request.IDEAIndicator;
specification.IDEAPartDescriptor = request.IDEAPartDescriptor;
specification.OriginalECIServicesDate = request.OriginalECIServicesDate;
+ specification.ProgramEducationOrganizationId = request.ProgramEducationOrganizationId;
specification.ProgramName = request.ProgramName;
specification.ProgramTypeDescriptor = request.ProgramTypeDescriptor;
specification.StudentUniqueId = request.StudentUniqueId;
diff --git a/Utilities/CodeGeneration/EdFi.Ods.CodeGen.Tests/Approval/5.2.0/DataStandard_520_ApprovalTests.Verify.Standard_Std_5.2.0_EntityOrmMappings_MsSql_EntityOrmMappings.generated.hbm.approved.xml b/Utilities/CodeGeneration/EdFi.Ods.CodeGen.Tests/Approval/5.2.0/DataStandard_520_ApprovalTests.Verify.Standard_Std_5.2.0_EntityOrmMappings_MsSql_EntityOrmMappings.generated.hbm.approved.xml
index 58a52bd610..00b721ba95 100644
--- a/Utilities/CodeGeneration/EdFi.Ods.CodeGen.Tests/Approval/5.2.0/DataStandard_520_ApprovalTests.Verify.Standard_Std_5.2.0_EntityOrmMappings_MsSql_EntityOrmMappings.generated.hbm.approved.xml
+++ b/Utilities/CodeGeneration/EdFi.Ods.CodeGen.Tests/Approval/5.2.0/DataStandard_520_ApprovalTests.Verify.Standard_Std_5.2.0_EntityOrmMappings_MsSql_EntityOrmMappings.generated.hbm.approved.xml
@@ -604,6 +604,233 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -834,6 +1061,112 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -5911,6 +6244,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -8583,6 +8932,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -15847,26 +16227,209 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -15874,58 +16437,109 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
+
+
+
-
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
+
+
+
-
-
+
-
+
-
+
+
+
-
-
+
@@ -15933,16 +16547,16 @@
-
+
-
-
-
-
+
+
+
+
+
-
@@ -15951,7 +16565,6 @@
-
@@ -15963,15 +16576,16 @@
-
+
-
-
-
+
+
+
+
+
-
@@ -15980,8 +16594,7 @@
-
-
+
@@ -15992,14 +16605,15 @@
-
+
+
+
-
+
-
@@ -16010,14 +16624,15 @@
-
+
+
+
-
+
-
@@ -16035,24 +16650,67 @@
-
-
-
-
-
-
+
+
+
+
-
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -16615,6 +17273,90 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -19074,6 +19816,7 @@
+
@@ -19091,6 +19834,7 @@
+
@@ -19131,7 +19875,7 @@
-
+
diff --git a/Utilities/CodeGeneration/EdFi.Ods.CodeGen.Tests/Approval/5.2.0/DataStandard_520_ApprovalTests.Verify.Standard_Std_5.2.0_EntityOrmMappings_MsSql_EntityOrmMappingsForQueries.generated.hbm.approved.xml b/Utilities/CodeGeneration/EdFi.Ods.CodeGen.Tests/Approval/5.2.0/DataStandard_520_ApprovalTests.Verify.Standard_Std_5.2.0_EntityOrmMappings_MsSql_EntityOrmMappingsForQueries.generated.hbm.approved.xml
index 7642c1ca5a..9423fcdaad 100644
--- a/Utilities/CodeGeneration/EdFi.Ods.CodeGen.Tests/Approval/5.2.0/DataStandard_520_ApprovalTests.Verify.Standard_Std_5.2.0_EntityOrmMappings_MsSql_EntityOrmMappingsForQueries.generated.hbm.approved.xml
+++ b/Utilities/CodeGeneration/EdFi.Ods.CodeGen.Tests/Approval/5.2.0/DataStandard_520_ApprovalTests.Verify.Standard_Std_5.2.0_EntityOrmMappings_MsSql_EntityOrmMappingsForQueries.generated.hbm.approved.xml
@@ -151,6 +151,14 @@
+
+
+
+
+
+
+
+
@@ -159,6 +167,14 @@
+
+
+
+
+
+
+
+
@@ -652,6 +668,246 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -882,6 +1138,98 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -3556,6 +3904,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -6020,6 +6389,13 @@
+
+
+
+
+
+
+
@@ -7459,6 +7835,13 @@
+
+
+
+
+
+
+
@@ -8628,6 +9011,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -10394,6 +10800,13 @@
+
+
+
+
+
+
+
@@ -10408,6 +10821,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -10590,6 +11017,13 @@
+
+
+
+
+
+
+
@@ -10625,6 +11059,13 @@
+
+
+
+
+
+
+
@@ -10695,6 +11136,13 @@
+
+
+
+
+
+
+
@@ -12265,6 +12713,42 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -15199,6 +15683,15 @@
+
+
+
+
+
+
+
+
+
@@ -15889,7 +16382,7 @@
-
+
@@ -19650,6 +20143,13 @@
+
+
+
+
+
+
+
@@ -20614,11 +21114,194 @@
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
@@ -20627,56 +21310,110 @@
-
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
+
+
+
+
+
-
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
+
+
+
-
-
+
-
+
-
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -20684,16 +21421,16 @@
-
+
-
-
-
-
+
+
+
+
+
-
@@ -20702,16 +21439,12 @@
-
-
-
-
-
-
+
+
@@ -20720,15 +21453,16 @@
-
+
-
-
-
+
+
+
+
+
-
@@ -20737,18 +21471,11 @@
-
-
+
-
-
-
-
-
-
@@ -20756,14 +21483,15 @@
-
+
+
+
-
+
-
@@ -20783,25 +21511,68 @@
-
-
-
-
-
-
+
+
+
+
-
-
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -21353,6 +22124,90 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -21430,6 +22285,14 @@
+
+
+
+
+
+
+
+
@@ -23255,6 +24118,15 @@
+
+
+
+
+
+
+
+
+
@@ -23887,6 +24759,7 @@
+
@@ -23943,7 +24816,7 @@
-
+
diff --git a/Utilities/CodeGeneration/EdFi.Ods.CodeGen.Tests/Approval/5.2.0/DataStandard_520_ApprovalTests.Verify.Standard_Std_5.2.0_EntityOrmMappings_PgSql_EntityOrmMappings.generated.hbm.approved.xml b/Utilities/CodeGeneration/EdFi.Ods.CodeGen.Tests/Approval/5.2.0/DataStandard_520_ApprovalTests.Verify.Standard_Std_5.2.0_EntityOrmMappings_PgSql_EntityOrmMappings.generated.hbm.approved.xml
index 24f1cb49fe..d622b29cd7 100644
--- a/Utilities/CodeGeneration/EdFi.Ods.CodeGen.Tests/Approval/5.2.0/DataStandard_520_ApprovalTests.Verify.Standard_Std_5.2.0_EntityOrmMappings_PgSql_EntityOrmMappings.generated.hbm.approved.xml
+++ b/Utilities/CodeGeneration/EdFi.Ods.CodeGen.Tests/Approval/5.2.0/DataStandard_520_ApprovalTests.Verify.Standard_Std_5.2.0_EntityOrmMappings_PgSql_EntityOrmMappings.generated.hbm.approved.xml
@@ -604,6 +604,233 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -834,6 +1061,112 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -5911,6 +6244,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -8583,6 +8932,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -15847,26 +16227,209 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -15874,58 +16437,109 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
+
+
+
-
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
+
+
+
-
-
+
-
+
-
+
+
+
-
-
+
@@ -15933,16 +16547,16 @@
-
+
-
-
-
-
+
+
+
+
+
-
@@ -15951,7 +16565,6 @@
-
@@ -15963,15 +16576,16 @@
-
+
-
-
-
+
+
+
+
+
-
@@ -15980,8 +16594,7 @@
-
-
+
@@ -15992,14 +16605,15 @@
-
+
+
+
-
+
-
@@ -16010,14 +16624,15 @@
-
+
+
+
-
+
-
@@ -16035,24 +16650,67 @@
-
-
-
-
-
-
+
+
+
+
-
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -16615,6 +17273,90 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -19074,6 +19816,7 @@
+
@@ -19091,6 +19834,7 @@
+
@@ -19131,7 +19875,7 @@
-
+
diff --git a/Utilities/CodeGeneration/EdFi.Ods.CodeGen.Tests/Approval/5.2.0/DataStandard_520_ApprovalTests.Verify.Standard_Std_5.2.0_EntityOrmMappings_PgSql_EntityOrmMappingsForQueries.generated.hbm.approved.xml b/Utilities/CodeGeneration/EdFi.Ods.CodeGen.Tests/Approval/5.2.0/DataStandard_520_ApprovalTests.Verify.Standard_Std_5.2.0_EntityOrmMappings_PgSql_EntityOrmMappingsForQueries.generated.hbm.approved.xml
index b6a23ad511..e3f9640f3d 100644
--- a/Utilities/CodeGeneration/EdFi.Ods.CodeGen.Tests/Approval/5.2.0/DataStandard_520_ApprovalTests.Verify.Standard_Std_5.2.0_EntityOrmMappings_PgSql_EntityOrmMappingsForQueries.generated.hbm.approved.xml
+++ b/Utilities/CodeGeneration/EdFi.Ods.CodeGen.Tests/Approval/5.2.0/DataStandard_520_ApprovalTests.Verify.Standard_Std_5.2.0_EntityOrmMappings_PgSql_EntityOrmMappingsForQueries.generated.hbm.approved.xml
@@ -151,6 +151,14 @@
+
+
+
+
+
+
+
+
@@ -159,6 +167,14 @@
+
+
+
+
+
+
+
+
@@ -652,6 +668,246 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -882,6 +1138,98 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -3556,6 +3904,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -6020,6 +6389,13 @@
+
+
+
+
+
+
+
@@ -7459,6 +7835,13 @@
+
+
+
+
+
+
+
@@ -8628,6 +9011,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -10394,6 +10800,13 @@
+
+
+
+
+
+
+
@@ -10408,6 +10821,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -10590,6 +11017,13 @@
+
+
+
+
+
+
+
@@ -10625,6 +11059,13 @@
+
+
+
+
+
+
+
@@ -10695,6 +11136,13 @@
+
+
+
+
+
+
+
@@ -12265,6 +12713,42 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -15199,6 +15683,15 @@
+
+
+
+
+
+
+
+
+
@@ -15889,7 +16382,7 @@
-
+
@@ -19650,6 +20143,13 @@
+
+
+
+
+
+
+
@@ -20614,11 +21114,194 @@
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
@@ -20627,56 +21310,110 @@
-
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
+
+
+
+
+
-
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
+
+
+
-
-
+
-
+
-
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -20684,16 +21421,16 @@
-
+
-
-
-
-
+
+
+
+
+
-
@@ -20702,16 +21439,12 @@
-
-
-
-
-
-
+
+
@@ -20720,15 +21453,16 @@
-
+
-
-
-
+
+
+
+
+
-
@@ -20737,18 +21471,11 @@
-
-
+
-
-
-
-
-
-
@@ -20756,14 +21483,15 @@
-
+
+
+
-
+
-
@@ -20783,25 +21511,68 @@
-
-
-
-
-
-
+
+
+
+
-
-
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -21353,6 +22124,90 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -21430,6 +22285,14 @@
+
+
+
+
+
+
+
+
@@ -23255,6 +24118,15 @@
+
+
+
+
+
+
+
+
+
@@ -23887,6 +24759,7 @@
+
@@ -23943,7 +24816,7 @@
-
+
diff --git a/Utilities/CodeGeneration/EdFi.Ods.CodeGen.Tests/Approval/5.2.0/DataStandard_520_ApprovalTests.Verify.Standard_Std_5.2.0_ExceptionHandling_DatabaseMetadata.generated.approved.cs b/Utilities/CodeGeneration/EdFi.Ods.CodeGen.Tests/Approval/5.2.0/DataStandard_520_ApprovalTests.Verify.Standard_Std_5.2.0_ExceptionHandling_DatabaseMetadata.generated.approved.cs
index 053d251e1b..ed5526474b 100644
--- a/Utilities/CodeGeneration/EdFi.Ods.CodeGen.Tests/Approval/5.2.0/DataStandard_520_ApprovalTests.Verify.Standard_Std_5.2.0_ExceptionHandling_DatabaseMetadata.generated.approved.cs
+++ b/Utilities/CodeGeneration/EdFi.Ods.CodeGen.Tests/Approval/5.2.0/DataStandard_520_ApprovalTests.Verify.Standard_Std_5.2.0_ExceptionHandling_DatabaseMetadata.generated.approved.cs
@@ -44,9 +44,24 @@ public IndexDetails GetIndexDetails(string indexName)
{ "AssessmentAcademicSubject_PK", new IndexDetails { IndexName = "AssessmentAcademicSubject_PK", TableName = "AssessmentAcademicSubject", ColumnNames = new List { "AssessmentIdentifier", "Namespace", "AcademicSubjectDescriptorId" } } },
{ "FK_AssessmentAcademicSubject_AcademicSubjectDescriptor", new IndexDetails { IndexName = "FK_AssessmentAcademicSubject_AcademicSubjectDescriptor", TableName = "AssessmentAcademicSubject", ColumnNames = new List { "AcademicSubjectDescriptorId" } } },
{ "FK_AssessmentAcademicSubject_Assessment", new IndexDetails { IndexName = "FK_AssessmentAcademicSubject_Assessment", TableName = "AssessmentAcademicSubject", ColumnNames = new List { "AssessmentIdentifier", "Namespace" } } },
+ { "AssessmentAdministration_PK", new IndexDetails { IndexName = "AssessmentAdministration_PK", TableName = "AssessmentAdministration", ColumnNames = new List { "AdministrationIdentifier", "AssessmentIdentifier", "AssigningEducationOrganizationId", "Namespace" } } },
+ { "FK_AssessmentAdministration_Assessment", new IndexDetails { IndexName = "FK_AssessmentAdministration_Assessment", TableName = "AssessmentAdministration", ColumnNames = new List { "AssessmentIdentifier", "Namespace" } } },
+ { "FK_AssessmentAdministration_EducationOrganization", new IndexDetails { IndexName = "FK_AssessmentAdministration_EducationOrganization", TableName = "AssessmentAdministration", ColumnNames = new List { "AssigningEducationOrganizationId" } } },
+ { "UX_AssessmentAdministration_Id", new IndexDetails { IndexName = "UX_AssessmentAdministration_Id", TableName = "AssessmentAdministration", ColumnNames = new List { "Id" } } },
+ { "AssessmentAdministrationAssessmentAdminstrationPeriod_PK", new IndexDetails { IndexName = "AssessmentAdministrationAssessmentAdminstrationPeriod_PK", TableName = "AssessmentAdministrationAssessmentAdminstrationPeriod", ColumnNames = new List { "AdministrationIdentifier", "AssessmentIdentifier", "AssigningEducationOrganizationId", "Namespace", "BeginDate" } } },
+ { "FK_AssessmentAdministrationAssessmentAdminstrationPeriod_AssessmentAdministration", new IndexDetails { IndexName = "FK_AssessmentAdministrationAssessmentAdminstrationPeriod_AssessmentAdministration", TableName = "AssessmentAdministrationAssessmentAdminstrationPeriod", ColumnNames = new List { "AdministrationIdentifier", "AssessmentIdentifier", "AssigningEducationOrganizationId", "Namespace" } } },
+ { "AssessmentAdministrationAssessmentBatteryPart_PK", new IndexDetails { IndexName = "AssessmentAdministrationAssessmentBatteryPart_PK", TableName = "AssessmentAdministrationAssessmentBatteryPart", ColumnNames = new List { "AdministrationIdentifier", "AssessmentIdentifier", "AssigningEducationOrganizationId", "Namespace", "AssessmentBatteryPartName" } } },
+ { "FK_AssessmentAdministrationAssessmentBatteryPart_AssessmentAdministration", new IndexDetails { IndexName = "FK_AssessmentAdministrationAssessmentBatteryPart_AssessmentAdministration", TableName = "AssessmentAdministrationAssessmentBatteryPart", ColumnNames = new List { "AdministrationIdentifier", "AssessmentIdentifier", "AssigningEducationOrganizationId", "Namespace" } } },
+ { "FK_AssessmentAdministrationAssessmentBatteryPart_AssessmentBatteryPart", new IndexDetails { IndexName = "FK_AssessmentAdministrationAssessmentBatteryPart_AssessmentBatteryPart", TableName = "AssessmentAdministrationAssessmentBatteryPart", ColumnNames = new List { "AssessmentBatteryPartName", "AssessmentIdentifier", "Namespace" } } },
{ "AssessmentAssessedGradeLevel_PK", new IndexDetails { IndexName = "AssessmentAssessedGradeLevel_PK", TableName = "AssessmentAssessedGradeLevel", ColumnNames = new List { "AssessmentIdentifier", "Namespace", "GradeLevelDescriptorId" } } },
{ "FK_AssessmentAssessedGradeLevel_Assessment", new IndexDetails { IndexName = "FK_AssessmentAssessedGradeLevel_Assessment", TableName = "AssessmentAssessedGradeLevel", ColumnNames = new List { "AssessmentIdentifier", "Namespace" } } },
{ "FK_AssessmentAssessedGradeLevel_GradeLevelDescriptor", new IndexDetails { IndexName = "FK_AssessmentAssessedGradeLevel_GradeLevelDescriptor", TableName = "AssessmentAssessedGradeLevel", ColumnNames = new List { "GradeLevelDescriptorId" } } },
+ { "AssessmentBatteryPart_PK", new IndexDetails { IndexName = "AssessmentBatteryPart_PK", TableName = "AssessmentBatteryPart", ColumnNames = new List { "AssessmentBatteryPartName", "AssessmentIdentifier", "Namespace" } } },
+ { "FK_AssessmentBatteryPart_Assessment", new IndexDetails { IndexName = "FK_AssessmentBatteryPart_Assessment", TableName = "AssessmentBatteryPart", ColumnNames = new List { "AssessmentIdentifier", "Namespace" } } },
+ { "UX_AssessmentBatteryPart_Id", new IndexDetails { IndexName = "UX_AssessmentBatteryPart_Id", TableName = "AssessmentBatteryPart", ColumnNames = new List { "Id" } } },
+ { "AssessmentBatteryPartObjectiveAssessment_PK", new IndexDetails { IndexName = "AssessmentBatteryPartObjectiveAssessment_PK", TableName = "AssessmentBatteryPartObjectiveAssessment", ColumnNames = new List { "AssessmentBatteryPartName", "AssessmentIdentifier", "Namespace", "IdentificationCode" } } },
+ { "FK_AssessmentBatteryPartObjectiveAssessment_AssessmentBatteryPart", new IndexDetails { IndexName = "FK_AssessmentBatteryPartObjectiveAssessment_AssessmentBatteryPart", TableName = "AssessmentBatteryPartObjectiveAssessment", ColumnNames = new List { "AssessmentBatteryPartName", "AssessmentIdentifier", "Namespace" } } },
+ { "FK_AssessmentBatteryPartObjectiveAssessment_ObjectiveAssessment", new IndexDetails { IndexName = "FK_AssessmentBatteryPartObjectiveAssessment_ObjectiveAssessment", TableName = "AssessmentBatteryPartObjectiveAssessment", ColumnNames = new List { "AssessmentIdentifier", "IdentificationCode", "Namespace" } } },
{ "AssessmentCategoryDescriptor_PK", new IndexDetails { IndexName = "AssessmentCategoryDescriptor_PK", TableName = "AssessmentCategoryDescriptor", ColumnNames = new List { "AssessmentCategoryDescriptorId" } } },
{ "AssessmentContentStandard_PK", new IndexDetails { IndexName = "AssessmentContentStandard_PK", TableName = "AssessmentContentStandard", ColumnNames = new List { "AssessmentIdentifier", "Namespace" } } },
{ "FK_AssessmentContentStandard_EducationOrganization", new IndexDetails { IndexName = "FK_AssessmentContentStandard_EducationOrganization", TableName = "AssessmentContentStandard", ColumnNames = new List { "MandatingEducationOrganizationId" } } },
@@ -102,6 +117,13 @@ public IndexDetails GetIndexDetails(string indexName)
{ "AssessmentSection_PK", new IndexDetails { IndexName = "AssessmentSection_PK", TableName = "AssessmentSection", ColumnNames = new List { "AssessmentIdentifier", "Namespace", "LocalCourseCode", "SchoolId", "SchoolYear", "SectionIdentifier", "SessionName" } } },
{ "FK_AssessmentSection_Assessment", new IndexDetails { IndexName = "FK_AssessmentSection_Assessment", TableName = "AssessmentSection", ColumnNames = new List { "AssessmentIdentifier", "Namespace" } } },
{ "FK_AssessmentSection_Section", new IndexDetails { IndexName = "FK_AssessmentSection_Section", TableName = "AssessmentSection", ColumnNames = new List { "LocalCourseCode", "SchoolId", "SchoolYear", "SectionIdentifier", "SessionName" } } },
+ { "AssesssmentAdministrationParticipation_PK", new IndexDetails { IndexName = "AssesssmentAdministrationParticipation_PK", TableName = "AssesssmentAdministrationParticipation", ColumnNames = new List { "AdministrationIdentifier", "AssessmentIdentifier", "AssigningEducationOrganizationId", "Namespace", "ParticipatingEducationOrganizationId" } } },
+ { "FK_AssesssmentAdministrationParticipation_AssessmentAdministration", new IndexDetails { IndexName = "FK_AssesssmentAdministrationParticipation_AssessmentAdministration", TableName = "AssesssmentAdministrationParticipation", ColumnNames = new List { "AdministrationIdentifier", "AssessmentIdentifier", "AssigningEducationOrganizationId", "Namespace" } } },
+ { "FK_AssesssmentAdministrationParticipation_EducationOrganization", new IndexDetails { IndexName = "FK_AssesssmentAdministrationParticipation_EducationOrganization", TableName = "AssesssmentAdministrationParticipation", ColumnNames = new List { "ParticipatingEducationOrganizationId" } } },
+ { "UX_AssesssmentAdministrationParticipation_Id", new IndexDetails { IndexName = "UX_AssesssmentAdministrationParticipation_Id", TableName = "AssesssmentAdministrationParticipation", ColumnNames = new List { "Id" } } },
+ { "AssesssmentAdministrationParticipationAdministrationPointOfContact_PK", new IndexDetails { IndexName = "AssesssmentAdministrationParticipationAdministrationPointOfContact_PK", TableName = "AssesssmentAdministrationParticipationAdministrationPointOfContact", ColumnNames = new List { "AdministrationIdentifier", "AssessmentIdentifier", "AssigningEducationOrganizationId", "Namespace", "ParticipatingEducationOrganizationId", "EducationOrganizationId", "ElectronicMailAddress" } } },
+ { "FK_AssesssmentAdministrationParticipationAdministrationPointOfContact_AssesssmentAdministrationParticipation", new IndexDetails { IndexName = "FK_AssesssmentAdministrationParticipationAdministrationPointOfContact_AssesssmentAdministrationParticipation", TableName = "AssesssmentAdministrationParticipationAdministrationPointOfContact", ColumnNames = new List { "AdministrationIdentifier", "AssessmentIdentifier", "AssigningEducationOrganizationId", "Namespace", "ParticipatingEducationOrganizationId" } } },
+ { "FK_AssesssmentAdministrationParticipationAdministrationPointOfContact_EducationOrganization", new IndexDetails { IndexName = "FK_AssesssmentAdministrationParticipationAdministrationPointOfContact_EducationOrganization", TableName = "AssesssmentAdministrationParticipationAdministrationPointOfContact", ColumnNames = new List { "EducationOrganizationId" } } },
{ "AssignmentLateStatusDescriptor_PK", new IndexDetails { IndexName = "AssignmentLateStatusDescriptor_PK", TableName = "AssignmentLateStatusDescriptor", ColumnNames = new List { "AssignmentLateStatusDescriptorId" } } },
{ "AttemptStatusDescriptor_PK", new IndexDetails { IndexName = "AttemptStatusDescriptor_PK", TableName = "AttemptStatusDescriptor", ColumnNames = new List { "AttemptStatusDescriptorId" } } },
{ "AttendanceEventCategoryDescriptor_PK", new IndexDetails { IndexName = "AttendanceEventCategoryDescriptor_PK", TableName = "AttendanceEventCategoryDescriptor", ColumnNames = new List { "AttendanceEventCategoryDescriptorId" } } },
@@ -963,6 +985,7 @@ public IndexDetails GetIndexDetails(string indexName)
{ "FK_Section_SectionTypeDescriptor", new IndexDetails { IndexName = "FK_Section_SectionTypeDescriptor", TableName = "Section", ColumnNames = new List { "SectionTypeDescriptorId" } } },
{ "Section_PK", new IndexDetails { IndexName = "Section_PK", TableName = "Section", ColumnNames = new List { "LocalCourseCode", "SchoolId", "SchoolYear", "SectionIdentifier", "SessionName" } } },
{ "UX_Section_Id", new IndexDetails { IndexName = "UX_Section_Id", TableName = "Section", ColumnNames = new List { "Id" } } },
+ { "Section504DisabilityTypeDescriptor_PK", new IndexDetails { IndexName = "Section504DisabilityTypeDescriptor_PK", TableName = "Section504DisabilityTypeDescriptor", ColumnNames = new List { "Section504DisabilityTypeDescriptorId" } } },
{ "FK_SectionAttendanceTakenEvent_CalendarDate", new IndexDetails { IndexName = "FK_SectionAttendanceTakenEvent_CalendarDate", TableName = "SectionAttendanceTakenEvent", ColumnNames = new List { "CalendarCode", "Date", "SchoolId", "SchoolYear" } } },
{ "FK_SectionAttendanceTakenEvent_Section", new IndexDetails { IndexName = "FK_SectionAttendanceTakenEvent_Section", TableName = "SectionAttendanceTakenEvent", ColumnNames = new List { "LocalCourseCode", "SchoolId", "SchoolYear", "SectionIdentifier", "SessionName" } } },
{ "FK_SectionAttendanceTakenEvent_Staff", new IndexDetails { IndexName = "FK_SectionAttendanceTakenEvent_Staff", TableName = "SectionAttendanceTakenEvent", ColumnNames = new List { "StaffUSI" } } },
@@ -1225,6 +1248,28 @@ public IndexDetails GetIndexDetails(string indexName)
{ "StudentAssessmentPerformanceLevel_PK", new IndexDetails { IndexName = "StudentAssessmentPerformanceLevel_PK", TableName = "StudentAssessmentPerformanceLevel", ColumnNames = new List { "AssessmentIdentifier", "Namespace", "StudentAssessmentIdentifier", "StudentUSI", "AssessmentReportingMethodDescriptorId", "PerformanceLevelDescriptorId" } } },
{ "FK_StudentAssessmentPeriod_AssessmentPeriodDescriptor", new IndexDetails { IndexName = "FK_StudentAssessmentPeriod_AssessmentPeriodDescriptor", TableName = "StudentAssessmentPeriod", ColumnNames = new List { "AssessmentPeriodDescriptorId" } } },
{ "StudentAssessmentPeriod_PK", new IndexDetails { IndexName = "StudentAssessmentPeriod_PK", TableName = "StudentAssessmentPeriod", ColumnNames = new List { "AssessmentIdentifier", "Namespace", "StudentAssessmentIdentifier", "StudentUSI" } } },
+ { "FK_StudentAssessmentRegistration_AssessmentAdministration", new IndexDetails { IndexName = "FK_StudentAssessmentRegistration_AssessmentAdministration", TableName = "StudentAssessmentRegistration", ColumnNames = new List { "AdministrationIdentifier", "AssessmentIdentifier", "AssigningEducationOrganizationId", "Namespace" } } },
+ { "FK_StudentAssessmentRegistration_EducationOrganization", new IndexDetails { IndexName = "FK_StudentAssessmentRegistration_EducationOrganization", TableName = "StudentAssessmentRegistration", ColumnNames = new List { "ReportingEducationOrganizationId" } } },
+ { "FK_StudentAssessmentRegistration_EducationOrganization1", new IndexDetails { IndexName = "FK_StudentAssessmentRegistration_EducationOrganization1", TableName = "StudentAssessmentRegistration", ColumnNames = new List { "TestingEducationOrganizationId" } } },
+ { "FK_StudentAssessmentRegistration_GradeLevelDescriptor", new IndexDetails { IndexName = "FK_StudentAssessmentRegistration_GradeLevelDescriptor", TableName = "StudentAssessmentRegistration", ColumnNames = new List { "AssessmentGradeLevelDescriptorId" } } },
+ { "FK_StudentAssessmentRegistration_PlatformTypeDescriptor", new IndexDetails { IndexName = "FK_StudentAssessmentRegistration_PlatformTypeDescriptor", TableName = "StudentAssessmentRegistration", ColumnNames = new List { "PlatformTypeDescriptorId" } } },
+ { "FK_StudentAssessmentRegistration_StudentEducationOrganizationAssessmentAccommodation", new IndexDetails { IndexName = "FK_StudentAssessmentRegistration_StudentEducationOrganizationAssessmentAccommodation", TableName = "StudentAssessmentRegistration", ColumnNames = new List { "EducationOrganizationId", "StudentUSI" } } },
+ { "FK_StudentAssessmentRegistration_StudentEducationOrganizationAssociation", new IndexDetails { IndexName = "FK_StudentAssessmentRegistration_StudentEducationOrganizationAssociation", TableName = "StudentAssessmentRegistration", ColumnNames = new List { "EducationOrganizationId", "StudentUSI" } } },
+ { "FK_StudentAssessmentRegistration_StudentSchoolAssociation", new IndexDetails { IndexName = "FK_StudentAssessmentRegistration_StudentSchoolAssociation", TableName = "StudentAssessmentRegistration", ColumnNames = new List { "EntryDate", "SchoolId", "StudentUSI" } } },
+ { "StudentAssessmentRegistration_PK", new IndexDetails { IndexName = "StudentAssessmentRegistration_PK", TableName = "StudentAssessmentRegistration", ColumnNames = new List { "AdministrationIdentifier", "AssessmentIdentifier", "AssigningEducationOrganizationId", "EducationOrganizationId", "Namespace", "StudentUSI" } } },
+ { "UX_StudentAssessmentRegistration_Id", new IndexDetails { IndexName = "UX_StudentAssessmentRegistration_Id", TableName = "StudentAssessmentRegistration", ColumnNames = new List { "Id" } } },
+ { "FK_StudentAssessmentRegistrationAssessmentAccommodation_AccommodationDescriptor", new IndexDetails { IndexName = "FK_StudentAssessmentRegistrationAssessmentAccommodation_AccommodationDescriptor", TableName = "StudentAssessmentRegistrationAssessmentAccommodation", ColumnNames = new List { "AccommodationDescriptorId" } } },
+ { "FK_StudentAssessmentRegistrationAssessmentAccommodation_StudentAssessmentRegistration", new IndexDetails { IndexName = "FK_StudentAssessmentRegistrationAssessmentAccommodation_StudentAssessmentRegistration", TableName = "StudentAssessmentRegistrationAssessmentAccommodation", ColumnNames = new List { "AdministrationIdentifier", "AssessmentIdentifier", "AssigningEducationOrganizationId", "EducationOrganizationId", "Namespace", "StudentUSI" } } },
+ { "StudentAssessmentRegistrationAssessmentAccommodation_PK", new IndexDetails { IndexName = "StudentAssessmentRegistrationAssessmentAccommodation_PK", TableName = "StudentAssessmentRegistrationAssessmentAccommodation", ColumnNames = new List { "AdministrationIdentifier", "AssessmentIdentifier", "AssigningEducationOrganizationId", "EducationOrganizationId", "Namespace", "StudentUSI", "AccommodationDescriptorId" } } },
+ { "FK_StudentAssessmentRegistrationAssessmentCustomization_StudentAssessmentRegistration", new IndexDetails { IndexName = "FK_StudentAssessmentRegistrationAssessmentCustomization_StudentAssessmentRegistration", TableName = "StudentAssessmentRegistrationAssessmentCustomization", ColumnNames = new List { "AdministrationIdentifier", "AssessmentIdentifier", "AssigningEducationOrganizationId", "EducationOrganizationId", "Namespace", "StudentUSI" } } },
+ { "StudentAssessmentRegistrationAssessmentCustomization_PK", new IndexDetails { IndexName = "StudentAssessmentRegistrationAssessmentCustomization_PK", TableName = "StudentAssessmentRegistrationAssessmentCustomization", ColumnNames = new List { "AdministrationIdentifier", "AssessmentIdentifier", "AssigningEducationOrganizationId", "EducationOrganizationId", "Namespace", "StudentUSI", "CustomizationKey" } } },
+ { "FK_StudentAssessmentRegistrationBatteryPartAssociation_AssessmentBatteryPart", new IndexDetails { IndexName = "FK_StudentAssessmentRegistrationBatteryPartAssociation_AssessmentBatteryPart", TableName = "StudentAssessmentRegistrationBatteryPartAssociation", ColumnNames = new List { "AssessmentBatteryPartName", "AssessmentIdentifier", "Namespace" } } },
+ { "FK_StudentAssessmentRegistrationBatteryPartAssociation_StudentAssessmentRegistration", new IndexDetails { IndexName = "FK_StudentAssessmentRegistrationBatteryPartAssociation_StudentAssessmentRegistration", TableName = "StudentAssessmentRegistrationBatteryPartAssociation", ColumnNames = new List { "AdministrationIdentifier", "AssessmentIdentifier", "AssigningEducationOrganizationId", "EducationOrganizationId", "Namespace", "StudentUSI" } } },
+ { "StudentAssessmentRegistrationBatteryPartAssociation_PK", new IndexDetails { IndexName = "StudentAssessmentRegistrationBatteryPartAssociation_PK", TableName = "StudentAssessmentRegistrationBatteryPartAssociation", ColumnNames = new List { "AdministrationIdentifier", "AssessmentBatteryPartName", "AssessmentIdentifier", "AssigningEducationOrganizationId", "EducationOrganizationId", "Namespace", "StudentUSI" } } },
+ { "UX_StudentAssessmentRegistrationBatteryPartAssociation_Id", new IndexDetails { IndexName = "UX_StudentAssessmentRegistrationBatteryPartAssociation_Id", TableName = "StudentAssessmentRegistrationBatteryPartAssociation", ColumnNames = new List { "Id" } } },
+ { "FK_StudentAssessmentRegistrationBatteryPartAssociationAccommodation_AccommodationDescriptor", new IndexDetails { IndexName = "FK_StudentAssessmentRegistrationBatteryPartAssociationAccommodation_AccommodationDescriptor", TableName = "StudentAssessmentRegistrationBatteryPartAssociationAccommodation", ColumnNames = new List { "AccommodationDescriptorId" } } },
+ { "FK_StudentAssessmentRegistrationBatteryPartAssociationAccommodation_StudentAssessmentRegistrationBatteryPartAssociation", new IndexDetails { IndexName = "FK_StudentAssessmentRegistrationBatteryPartAssociationAccommodation_StudentAssessmentRegistrationBatteryPartAssociation", TableName = "StudentAssessmentRegistrationBatteryPartAssociationAccommodation", ColumnNames = new List { "AdministrationIdentifier", "AssessmentBatteryPartName", "AssessmentIdentifier", "AssigningEducationOrganizationId", "EducationOrganizationId", "Namespace", "StudentUSI" } } },
+ { "StudentAssessmentRegistrationBatteryPartAssociationAccommodation_PK", new IndexDetails { IndexName = "StudentAssessmentRegistrationBatteryPartAssociationAccommodation_PK", TableName = "StudentAssessmentRegistrationBatteryPartAssociationAccommodation", ColumnNames = new List { "AdministrationIdentifier", "AssessmentBatteryPartName", "AssessmentIdentifier", "AssigningEducationOrganizationId", "EducationOrganizationId", "Namespace", "StudentUSI", "AccommodationDescriptorId" } } },
{ "FK_StudentAssessmentScoreResult_AssessmentReportingMethodDescriptor", new IndexDetails { IndexName = "FK_StudentAssessmentScoreResult_AssessmentReportingMethodDescriptor", TableName = "StudentAssessmentScoreResult", ColumnNames = new List { "AssessmentReportingMethodDescriptorId" } } },
{ "FK_StudentAssessmentScoreResult_ResultDatatypeTypeDescriptor", new IndexDetails { IndexName = "FK_StudentAssessmentScoreResult_ResultDatatypeTypeDescriptor", TableName = "StudentAssessmentScoreResult", ColumnNames = new List { "ResultDatatypeTypeDescriptorId" } } },
{ "FK_StudentAssessmentScoreResult_StudentAssessment", new IndexDetails { IndexName = "FK_StudentAssessmentScoreResult_StudentAssessment", TableName = "StudentAssessmentScoreResult", ColumnNames = new List { "AssessmentIdentifier", "Namespace", "StudentAssessmentIdentifier", "StudentUSI" } } },
@@ -1285,6 +1330,13 @@ public IndexDetails GetIndexDetails(string indexName)
{ "FK_StudentDisciplineIncidentNonOffenderAssociationDisciplineIncidentParticipationCode_DisciplineIncidentParticipationCodeDescrip", new IndexDetails { IndexName = "FK_StudentDisciplineIncidentNonOffenderAssociationDisciplineIncidentParticipationCode_DisciplineIncidentParticipationCodeDescrip", TableName = "StudentDisciplineIncidentNonOffenderAssociationDisciplineIncidentParticipationCode", ColumnNames = new List { "DisciplineIncidentParticipationCodeDescriptorId" } } },
{ "FK_StudentDisciplineIncidentNonOffenderAssociationDisciplineIncidentParticipationCode_StudentDisciplineIncidentNonOffenderAssoci", new IndexDetails { IndexName = "FK_StudentDisciplineIncidentNonOffenderAssociationDisciplineIncidentParticipationCode_StudentDisciplineIncidentNonOffenderAssoci", TableName = "StudentDisciplineIncidentNonOffenderAssociationDisciplineIncidentParticipationCode", ColumnNames = new List { "IncidentIdentifier", "SchoolId", "StudentUSI" } } },
{ "StudentDisciplineIncidentNonOffenderAssociationDisciplineIncidentParticipationCode_PK", new IndexDetails { IndexName = "StudentDisciplineIncidentNonOffenderAssociationDisciplineIncidentParticipationCode_PK", TableName = "StudentDisciplineIncidentNonOffenderAssociationDisciplineIncidentParticipationCode", ColumnNames = new List { "IncidentIdentifier", "SchoolId", "StudentUSI", "DisciplineIncidentParticipationCodeDescriptorId" } } },
+ { "FK_StudentEducationOrganizationAssessmentAccommodation_EducationOrganization", new IndexDetails { IndexName = "FK_StudentEducationOrganizationAssessmentAccommodation_EducationOrganization", TableName = "StudentEducationOrganizationAssessmentAccommodation", ColumnNames = new List { "EducationOrganizationId" } } },
+ { "FK_StudentEducationOrganizationAssessmentAccommodation_Student", new IndexDetails { IndexName = "FK_StudentEducationOrganizationAssessmentAccommodation_Student", TableName = "StudentEducationOrganizationAssessmentAccommodation", ColumnNames = new List { "StudentUSI" } } },
+ { "StudentEducationOrganizationAssessmentAccommodation_PK", new IndexDetails { IndexName = "StudentEducationOrganizationAssessmentAccommodation_PK", TableName = "StudentEducationOrganizationAssessmentAccommodation", ColumnNames = new List { "EducationOrganizationId", "StudentUSI" } } },
+ { "UX_StudentEducationOrganizationAssessmentAccommodation_Id", new IndexDetails { IndexName = "UX_StudentEducationOrganizationAssessmentAccommodation_Id", TableName = "StudentEducationOrganizationAssessmentAccommodation", ColumnNames = new List { "Id" } } },
+ { "FK_StudentEducationOrganizationAssessmentAccommodationGeneralAccommodation_AccommodationDescriptor", new IndexDetails { IndexName = "FK_StudentEducationOrganizationAssessmentAccommodationGeneralAccommodation_AccommodationDescriptor", TableName = "StudentEducationOrganizationAssessmentAccommodationGeneralAccommodation", ColumnNames = new List { "AccommodationDescriptorId" } } },
+ { "FK_StudentEducationOrganizationAssessmentAccommodationGeneralAccommodation_StudentEducationOrganizationAssessmentAccommodation", new IndexDetails { IndexName = "FK_StudentEducationOrganizationAssessmentAccommodationGeneralAccommodation_StudentEducationOrganizationAssessmentAccommodation", TableName = "StudentEducationOrganizationAssessmentAccommodationGeneralAccommodation", ColumnNames = new List { "EducationOrganizationId", "StudentUSI" } } },
+ { "StudentEducationOrganizationAssessmentAccommodationGeneralAccommodation_PK", new IndexDetails { IndexName = "StudentEducationOrganizationAssessmentAccommodationGeneralAccommodation_PK", TableName = "StudentEducationOrganizationAssessmentAccommodationGeneralAccommodation", ColumnNames = new List { "EducationOrganizationId", "StudentUSI", "AccommodationDescriptorId" } } },
{ "FK_StudentEducationOrganizationAssociation_BarrierToInternetAccessInResidenceDescriptor", new IndexDetails { IndexName = "FK_StudentEducationOrganizationAssociation_BarrierToInternetAccessInResidenceDescriptor", TableName = "StudentEducationOrganizationAssociation", ColumnNames = new List { "BarrierToInternetAccessInResidenceDescriptorId" } } },
{ "FK_StudentEducationOrganizationAssociation_EducationOrganization", new IndexDetails { IndexName = "FK_StudentEducationOrganizationAssociation_EducationOrganization", TableName = "StudentEducationOrganizationAssociation", ColumnNames = new List { "EducationOrganizationId" } } },
{ "FK_StudentEducationOrganizationAssociation_InternetAccessTypeInResidenceDescriptor", new IndexDetails { IndexName = "FK_StudentEducationOrganizationAssociation_InternetAccessTypeInResidenceDescriptor", TableName = "StudentEducationOrganizationAssociation", ColumnNames = new List { "InternetAccessTypeInResidenceDescriptorId" } } },
@@ -1505,6 +1557,8 @@ public IndexDetails GetIndexDetails(string indexName)
{ "FK_StudentSchoolFoodServiceProgramAssociationSchoolFoodServiceProgramService_SchoolFoodServiceProgramServiceDescriptor", new IndexDetails { IndexName = "FK_StudentSchoolFoodServiceProgramAssociationSchoolFoodServiceProgramService_SchoolFoodServiceProgramServiceDescriptor", TableName = "StudentSchoolFoodServiceProgramAssociationSchoolFoodServiceProgramService", ColumnNames = new List { "SchoolFoodServiceProgramServiceDescriptorId" } } },
{ "FK_StudentSchoolFoodServiceProgramAssociationSchoolFoodServiceProgramService_StudentSchoolFoodServiceProgramAssociation", new IndexDetails { IndexName = "FK_StudentSchoolFoodServiceProgramAssociationSchoolFoodServiceProgramService_StudentSchoolFoodServiceProgramAssociation", TableName = "StudentSchoolFoodServiceProgramAssociationSchoolFoodServiceProgramService", ColumnNames = new List { "BeginDate", "EducationOrganizationId", "ProgramEducationOrganizationId", "ProgramName", "ProgramTypeDescriptorId", "StudentUSI" } } },
{ "StudentSchoolFoodServiceProgramAssociationSchoolFoodServiceProgramService_PK", new IndexDetails { IndexName = "StudentSchoolFoodServiceProgramAssociationSchoolFoodServiceProgramService_PK", TableName = "StudentSchoolFoodServiceProgramAssociationSchoolFoodServiceProgramService", ColumnNames = new List { "BeginDate", "EducationOrganizationId", "ProgramEducationOrganizationId", "ProgramName", "ProgramTypeDescriptorId", "StudentUSI", "SchoolFoodServiceProgramServiceDescriptorId" } } },
+ { "FK_StudentSection504ProgramAssociation_Section504DisabilityTypeDescriptor", new IndexDetails { IndexName = "FK_StudentSection504ProgramAssociation_Section504DisabilityTypeDescriptor", TableName = "StudentSection504ProgramAssociation", ColumnNames = new List { "Section504DisabilityTypeDescriptorId" } } },
+ { "StudentSection504ProgramAssociation_PK", new IndexDetails { IndexName = "StudentSection504ProgramAssociation_PK", TableName = "StudentSection504ProgramAssociation", ColumnNames = new List { "BeginDate", "EducationOrganizationId", "ProgramEducationOrganizationId", "ProgramName", "ProgramTypeDescriptorId", "StudentUSI" } } },
{ "FK_StudentSectionAssociation_AttemptStatusDescriptor", new IndexDetails { IndexName = "FK_StudentSectionAssociation_AttemptStatusDescriptor", TableName = "StudentSectionAssociation", ColumnNames = new List { "AttemptStatusDescriptorId" } } },
{ "FK_StudentSectionAssociation_RepeatIdentifierDescriptor", new IndexDetails { IndexName = "FK_StudentSectionAssociation_RepeatIdentifierDescriptor", TableName = "StudentSectionAssociation", ColumnNames = new List { "RepeatIdentifierDescriptorId" } } },
{ "FK_StudentSectionAssociation_Section", new IndexDetails { IndexName = "FK_StudentSectionAssociation_Section", TableName = "StudentSectionAssociation", ColumnNames = new List { "LocalCourseCode", "SchoolId", "SchoolYear", "SectionIdentifier", "SessionName" } } },
@@ -1547,9 +1601,9 @@ public IndexDetails GetIndexDetails(string indexName)
{ "FK_StudentSpecialEducationProgramEligibilityAssociation_EligibilityEvaluationTypeDescriptor", new IndexDetails { IndexName = "FK_StudentSpecialEducationProgramEligibilityAssociation_EligibilityEvaluationTypeDescriptor", TableName = "StudentSpecialEducationProgramEligibilityAssociation", ColumnNames = new List { "EligibilityEvaluationTypeDescriptorId" } } },
{ "FK_StudentSpecialEducationProgramEligibilityAssociation_EvaluationDelayReasonDescriptor", new IndexDetails { IndexName = "FK_StudentSpecialEducationProgramEligibilityAssociation_EvaluationDelayReasonDescriptor", TableName = "StudentSpecialEducationProgramEligibilityAssociation", ColumnNames = new List { "EvaluationDelayReasonDescriptorId" } } },
{ "FK_StudentSpecialEducationProgramEligibilityAssociation_IDEAPartDescriptor", new IndexDetails { IndexName = "FK_StudentSpecialEducationProgramEligibilityAssociation_IDEAPartDescriptor", TableName = "StudentSpecialEducationProgramEligibilityAssociation", ColumnNames = new List { "IDEAPartDescriptorId" } } },
- { "FK_StudentSpecialEducationProgramEligibilityAssociation_Program", new IndexDetails { IndexName = "FK_StudentSpecialEducationProgramEligibilityAssociation_Program", TableName = "StudentSpecialEducationProgramEligibilityAssociation", ColumnNames = new List { "EducationOrganizationId", "ProgramName", "ProgramTypeDescriptorId" } } },
+ { "FK_StudentSpecialEducationProgramEligibilityAssociation_Program", new IndexDetails { IndexName = "FK_StudentSpecialEducationProgramEligibilityAssociation_Program", TableName = "StudentSpecialEducationProgramEligibilityAssociation", ColumnNames = new List { "ProgramEducationOrganizationId", "ProgramName", "ProgramTypeDescriptorId" } } },
{ "FK_StudentSpecialEducationProgramEligibilityAssociation_Student", new IndexDetails { IndexName = "FK_StudentSpecialEducationProgramEligibilityAssociation_Student", TableName = "StudentSpecialEducationProgramEligibilityAssociation", ColumnNames = new List { "StudentUSI" } } },
- { "StudentSpecialEducationProgramEligibilityAssociation_PK", new IndexDetails { IndexName = "StudentSpecialEducationProgramEligibilityAssociation_PK", TableName = "StudentSpecialEducationProgramEligibilityAssociation", ColumnNames = new List { "ConsentToEvaluationReceivedDate", "EducationOrganizationId", "ProgramName", "ProgramTypeDescriptorId", "StudentUSI" } } },
+ { "StudentSpecialEducationProgramEligibilityAssociation_PK", new IndexDetails { IndexName = "StudentSpecialEducationProgramEligibilityAssociation_PK", TableName = "StudentSpecialEducationProgramEligibilityAssociation", ColumnNames = new List { "ConsentToEvaluationReceivedDate", "EducationOrganizationId", "ProgramEducationOrganizationId", "ProgramName", "ProgramTypeDescriptorId", "StudentUSI" } } },
{ "UX_StudentSpecialEducationProgramEligibilityAssociation_Id", new IndexDetails { IndexName = "UX_StudentSpecialEducationProgramEligibilityAssociation_Id", TableName = "StudentSpecialEducationProgramEligibilityAssociation", ColumnNames = new List { "Id" } } },
{ "FK_StudentTitleIPartAProgramAssociation_TitleIPartAParticipantDescriptor", new IndexDetails { IndexName = "FK_StudentTitleIPartAProgramAssociation_TitleIPartAParticipantDescriptor", TableName = "StudentTitleIPartAProgramAssociation", ColumnNames = new List { "TitleIPartAParticipantDescriptorId" } } },
{ "StudentTitleIPartAProgramAssociation_PK", new IndexDetails { IndexName = "StudentTitleIPartAProgramAssociation_PK", TableName = "StudentTitleIPartAProgramAssociation", ColumnNames = new List { "BeginDate", "EducationOrganizationId", "ProgramEducationOrganizationId", "ProgramName", "ProgramTypeDescriptorId", "StudentUSI" } } },
diff --git a/Utilities/CodeGeneration/EdFi.Ods.CodeGen.Tests/Approval/5.2.0/DataStandard_520_ApprovalTests.Verify.Standard_Std_5.2.0_Models_Entities_Entities.generated.approved.cs b/Utilities/CodeGeneration/EdFi.Ods.CodeGen.Tests/Approval/5.2.0/DataStandard_520_ApprovalTests.Verify.Standard_Std_5.2.0_Models_Entities_Entities.generated.approved.cs
index 88d03192e9..09c601b23b 100644
--- a/Utilities/CodeGeneration/EdFi.Ods.CodeGen.Tests/Approval/5.2.0/DataStandard_520_ApprovalTests.Verify.Standard_Std_5.2.0_Models_Entities_Entities.generated.approved.cs
+++ b/Utilities/CodeGeneration/EdFi.Ods.CodeGen.Tests/Approval/5.2.0/DataStandard_520_ApprovalTests.Verify.Standard_Std_5.2.0_Models_Entities_Entities.generated.approved.cs
@@ -6444,378 +6444,21 @@ void IChildEntity.SetParent(object value)
}
}
}
-// Aggregate: AssessmentCategoryDescriptor
-
-namespace EdFi.Ods.Entities.NHibernate.AssessmentCategoryDescriptorAggregate.EdFi
-{
-// disable warnings for inheritance from classes marked Obsolete within this generated code only
-#pragma warning disable 612, 618
-
- ///
- /// A class which represents the edfi.AssessmentCategoryDescriptor table of the AssessmentCategoryDescriptor aggregate in the ODS database.
- ///
- [Schema("edfi")]
- [ExcludeFromCodeCoverage]
- public class AssessmentCategoryDescriptor : DescriptorAggregate.EdFi.Descriptor,
- Entities.Common.EdFi.IAssessmentCategoryDescriptor, IHasPrimaryKeyValues, IHasLookupColumnPropertyMap, IEdFiDescriptor
- {
-
- // =============================================================
- // Primary Key
- // -------------------------------------------------------------
- [DomainSignature]
- public virtual int AssessmentCategoryDescriptorId
- {
- get { return base.DescriptorId; }
- set { base.DescriptorId = value; }
- }
-
- // -------------------------------------------------------------
-
- // =============================================================
- // Inherited Properties
- // -------------------------------------------------------------
- string IDescriptor.CodeValue
- {
- get { return CodeValue; }
- set { CodeValue = value; }
- }
- string IDescriptor.Description
- {
- get { return Description; }
- set { Description = value; }
- }
- DateTime? IDescriptor.EffectiveBeginDate
- {
- get { return EffectiveBeginDate; }
- set { EffectiveBeginDate = value; }
- }
- DateTime? IDescriptor.EffectiveEndDate
- {
- get { return EffectiveEndDate; }
- set { EffectiveEndDate = value; }
- }
- string IDescriptor.Namespace
- {
- get { return Namespace; }
- set { Namespace = value; }
- }
- string IDescriptor.ShortDescription
- {
- get { return ShortDescription; }
- set { ShortDescription = value; }
- }
- // -------------------------------------------------------------
-
- // =============================================================
- // Properties
- // -------------------------------------------------------------
- // -------------------------------------------------------------
-
- // =============================================================
- // One-to-one relationships
- // -------------------------------------------------------------
- // -------------------------------------------------------------
-
- // =============================================================
- // Extensions
- // -------------------------------------------------------------
- // -------------------------------------------------------------
-
- // =============================================================
- // Reference Data
- // -------------------------------------------------------------
- // -------------------------------------------------------------
-
- //=============================================================
- // Collections
- // -------------------------------------------------------------
- // -------------------------------------------------------------
-
- // Provide lookup property map
- private static readonly Dictionary _idPropertyByLookupProperty = new Dictionary(StringComparer.InvariantCultureIgnoreCase)
- {
- };
-
- Dictionary IHasLookupColumnPropertyMap.IdPropertyByLookupProperty
- {
- get { return _idPropertyByLookupProperty; }
- }
-
- // Provide primary key information
- OrderedDictionary IHasPrimaryKeyValues.GetPrimaryKeyValues()
- {
- // Initialize a new dictionary to hold the key values
- var keyValues = new OrderedDictionary();
-
- // Add current key values
- keyValues.Add("AssessmentCategoryDescriptorId", AssessmentCategoryDescriptorId);
-
- return keyValues;
- }
-
- #region Overrides for Equals() and GetHashCode()
- public override bool Equals(object obj)
- {
- var compareTo = obj as IHasPrimaryKeyValues;
-
- if (ReferenceEquals(this, compareTo))
- return true;
-
- if (compareTo == null)
- return false;
-
- var theseKeys = (this as IHasPrimaryKeyValues).GetPrimaryKeyValues();
- var thoseKeys = compareTo.GetPrimaryKeyValues();
-
- foreach (DictionaryEntry entry in theseKeys)
- {
- if (entry.Value is string)
- {
- if (!GeneratedArtifactStaticDependencies.DatabaseEngineSpecificStringComparer.Equals((string) entry.Value, (string) thoseKeys[entry.Key]))
- {
- return false;
- }
- }
- else
- {
- if (!entry.Value.Equals(thoseKeys[entry.Key]))
- return false;
- }
- }
-
- return true;
- }
-
- public override int GetHashCode()
- {
- var keyValues = (this as IHasPrimaryKeyValues).GetPrimaryKeyValues();
-
- if (keyValues.Count == 0)
- return base.GetHashCode();
-
- var hashCode = new HashCode();
-
- foreach (DictionaryEntry entry in keyValues)
- {
- if (entry.Value is string)
- {
- hashCode.Add(entry.Value as string, GeneratedArtifactStaticDependencies.DatabaseEngineSpecificStringComparer);
- }
- else
- {
- hashCode.Add(entry.Value);
- }
- }
-
- return hashCode.ToHashCode();
- }
- #endregion
- bool ISynchronizable.Synchronize(object target)
- {
- return this.SynchronizeTo((Entities.Common.EdFi.IAssessmentCategoryDescriptor)target);
- }
-
- void IMappable.Map(object target)
- {
- this.MapTo((Entities.Common.EdFi.IAssessmentCategoryDescriptor) target, null);
- }
-
- }
-}
-// Aggregate: AssessmentIdentificationSystemDescriptor
-
-namespace EdFi.Ods.Entities.NHibernate.AssessmentIdentificationSystemDescriptorAggregate.EdFi
-{
-// disable warnings for inheritance from classes marked Obsolete within this generated code only
-#pragma warning disable 612, 618
-
- ///
- /// A class which represents the edfi.AssessmentIdentificationSystemDescriptor table of the AssessmentIdentificationSystemDescriptor aggregate in the ODS database.
- ///
- [Schema("edfi")]
- [ExcludeFromCodeCoverage]
- public class AssessmentIdentificationSystemDescriptor : DescriptorAggregate.EdFi.Descriptor,
- Entities.Common.EdFi.IAssessmentIdentificationSystemDescriptor, IHasPrimaryKeyValues, IHasLookupColumnPropertyMap, IEdFiDescriptor
- {
-
- // =============================================================
- // Primary Key
- // -------------------------------------------------------------
- [DomainSignature]
- public virtual int AssessmentIdentificationSystemDescriptorId
- {
- get { return base.DescriptorId; }
- set { base.DescriptorId = value; }
- }
-
- // -------------------------------------------------------------
-
- // =============================================================
- // Inherited Properties
- // -------------------------------------------------------------
- string IDescriptor.CodeValue
- {
- get { return CodeValue; }
- set { CodeValue = value; }
- }
- string IDescriptor.Description
- {
- get { return Description; }
- set { Description = value; }
- }
- DateTime? IDescriptor.EffectiveBeginDate
- {
- get { return EffectiveBeginDate; }
- set { EffectiveBeginDate = value; }
- }
- DateTime? IDescriptor.EffectiveEndDate
- {
- get { return EffectiveEndDate; }
- set { EffectiveEndDate = value; }
- }
- string IDescriptor.Namespace
- {
- get { return Namespace; }
- set { Namespace = value; }
- }
- string IDescriptor.ShortDescription
- {
- get { return ShortDescription; }
- set { ShortDescription = value; }
- }
- // -------------------------------------------------------------
-
- // =============================================================
- // Properties
- // -------------------------------------------------------------
- // -------------------------------------------------------------
-
- // =============================================================
- // One-to-one relationships
- // -------------------------------------------------------------
- // -------------------------------------------------------------
-
- // =============================================================
- // Extensions
- // -------------------------------------------------------------
- // -------------------------------------------------------------
+// Aggregate: AssessmentAdministration
- // =============================================================
- // Reference Data
- // -------------------------------------------------------------
- // -------------------------------------------------------------
-
- //=============================================================
- // Collections
- // -------------------------------------------------------------
- // -------------------------------------------------------------
-
- // Provide lookup property map
- private static readonly Dictionary _idPropertyByLookupProperty = new Dictionary(StringComparer.InvariantCultureIgnoreCase)
- {
- };
-
- Dictionary IHasLookupColumnPropertyMap.IdPropertyByLookupProperty
- {
- get { return _idPropertyByLookupProperty; }
- }
-
- // Provide primary key information
- OrderedDictionary IHasPrimaryKeyValues.GetPrimaryKeyValues()
- {
- // Initialize a new dictionary to hold the key values
- var keyValues = new OrderedDictionary();
-
- // Add current key values
- keyValues.Add("AssessmentIdentificationSystemDescriptorId", AssessmentIdentificationSystemDescriptorId);
-
- return keyValues;
- }
-
- #region Overrides for Equals() and GetHashCode()
- public override bool Equals(object obj)
- {
- var compareTo = obj as IHasPrimaryKeyValues;
-
- if (ReferenceEquals(this, compareTo))
- return true;
-
- if (compareTo == null)
- return false;
-
- var theseKeys = (this as IHasPrimaryKeyValues).GetPrimaryKeyValues();
- var thoseKeys = compareTo.GetPrimaryKeyValues();
-
- foreach (DictionaryEntry entry in theseKeys)
- {
- if (entry.Value is string)
- {
- if (!GeneratedArtifactStaticDependencies.DatabaseEngineSpecificStringComparer.Equals((string) entry.Value, (string) thoseKeys[entry.Key]))
- {
- return false;
- }
- }
- else
- {
- if (!entry.Value.Equals(thoseKeys[entry.Key]))
- return false;
- }
- }
-
- return true;
- }
-
- public override int GetHashCode()
- {
- var keyValues = (this as IHasPrimaryKeyValues).GetPrimaryKeyValues();
-
- if (keyValues.Count == 0)
- return base.GetHashCode();
-
- var hashCode = new HashCode();
-
- foreach (DictionaryEntry entry in keyValues)
- {
- if (entry.Value is string)
- {
- hashCode.Add(entry.Value as string, GeneratedArtifactStaticDependencies.DatabaseEngineSpecificStringComparer);
- }
- else
- {
- hashCode.Add(entry.Value);
- }
- }
-
- return hashCode.ToHashCode();
- }
- #endregion
- bool ISynchronizable.Synchronize(object target)
- {
- return this.SynchronizeTo((Entities.Common.EdFi.IAssessmentIdentificationSystemDescriptor)target);
- }
-
- void IMappable.Map(object target)
- {
- this.MapTo((Entities.Common.EdFi.IAssessmentIdentificationSystemDescriptor) target, null);
- }
-
- }
-}
-// Aggregate: AssessmentItem
-
-namespace EdFi.Ods.Entities.NHibernate.AssessmentItemAggregate.EdFi
+namespace EdFi.Ods.Entities.NHibernate.AssessmentAdministrationAggregate.EdFi
{
///
- /// Represents a read-only reference to the entity.
+ /// Represents a read-only reference to the entity.
///
- public class AssessmentItemReferenceData : IHasPrimaryKeyValues
+ public class AssessmentAdministrationReferenceData : IHasPrimaryKeyValues
{
// =============================================================
// Primary Key
// -------------------------------------------------------------
+ public virtual string AdministrationIdentifier { get; set; }
public virtual string AssessmentIdentifier { get; set; }
- public virtual string IdentificationCode { get; set; }
+ public virtual long AssigningEducationOrganizationId { get; set; }
public virtual string Namespace { get; set; }
// -------------------------------------------------------------
@@ -6837,8 +6480,9 @@ OrderedDictionary IHasPrimaryKeyValues.GetPrimaryKeyValues()
var keyValues = new OrderedDictionary();
// Add current key values
+ keyValues.Add("AdministrationIdentifier", AdministrationIdentifier);
keyValues.Add("AssessmentIdentifier", AssessmentIdentifier);
- keyValues.Add("IdentificationCode", IdentificationCode);
+ keyValues.Add("AssigningEducationOrganizationId", AssigningEducationOrganizationId);
keyValues.Add("Namespace", Namespace);
return keyValues;
@@ -6890,21 +6534,21 @@ public override int GetHashCode()
#pragma warning disable 612, 618
///
- /// A class which represents the edfi.AssessmentItem table of the AssessmentItem aggregate in the ODS database.
+ /// A class which represents the edfi.AssessmentAdministration table of the AssessmentAdministration aggregate in the ODS database.
///
[Schema("edfi")]
[ExcludeFromCodeCoverage]
- public class AssessmentItem : AggregateRootWithCompositeKey,
- Entities.Common.EdFi.IAssessmentItem, IHasPrimaryKeyValues, IHasLookupColumnPropertyMap, IHasExtensions
+ public class AssessmentAdministration : AggregateRootWithCompositeKey,
+ Entities.Common.EdFi.IAssessmentAdministration, IHasPrimaryKeyValues, IHasLookupColumnPropertyMap, IHasExtensions
{
public virtual void SuspendReferenceAssignmentCheck() { }
- public AssessmentItem()
+ public AssessmentAdministration()
{
- AssessmentItemLearningStandards = new HashSet();
- AssessmentItemPossibleResponses = new HashSet();
- Extensions = EntityExtensionsFactory.Instance == null ? new Dictionary() : new Dictionary(EntityExtensionsFactory.Instance.CreateRequiredEntityExtensions(this));
- AggregateExtensions = EntityExtensionsFactory.Instance == null ? new Dictionary() : new Dictionary(EntityExtensionsFactory.Instance.CreateAggregateExtensions());
+ AssessmentAdministrationAssessmentAdminstrationPeriods = new HashSet();
+ AssessmentAdministrationAssessmentBatteryParts = new HashSet();
+ Extensions = EntityExtensionsFactory.Instance == null ? new Dictionary() : new Dictionary(EntityExtensionsFactory.Instance.CreateRequiredEntityExtensions(this));
+ AggregateExtensions = EntityExtensionsFactory.Instance == null ? new Dictionary() : new Dictionary(EntityExtensionsFactory.Instance.CreateAggregateExtensions());
}
// restore warnings for inheritance from classes marked Obsolete
#pragma warning restore 612, 618
@@ -6913,9 +6557,11 @@ public AssessmentItem()
// Primary Key
// -------------------------------------------------------------
[DomainSignature]
+ public virtual string AdministrationIdentifier { get; set; }
+ [DomainSignature]
public virtual string AssessmentIdentifier { get; set; }
[DomainSignature]
- public virtual string IdentificationCode { get; set; }
+ public virtual long AssigningEducationOrganizationId { get; set; }
[DomainSignature]
public virtual string Namespace { get; set; }
// -------------------------------------------------------------
@@ -6928,45 +6574,6 @@ public AssessmentItem()
// =============================================================
// Properties
// -------------------------------------------------------------
- public virtual int? AssessmentItemCategoryDescriptorId
- {
- get
- {
- if (_assessmentItemCategoryDescriptorId == default(int?))
- _assessmentItemCategoryDescriptorId = string.IsNullOrWhiteSpace(_assessmentItemCategoryDescriptor) ? default(int?) : GeneratedArtifactStaticDependencies.DescriptorResolver.GetDescriptorId("AssessmentItemCategoryDescriptor", _assessmentItemCategoryDescriptor);
-
- return _assessmentItemCategoryDescriptorId;
- }
- set
- {
- _assessmentItemCategoryDescriptorId = value;
- _assessmentItemCategoryDescriptor = null;
- }
- }
-
- private int? _assessmentItemCategoryDescriptorId;
- private string _assessmentItemCategoryDescriptor;
-
- public virtual string AssessmentItemCategoryDescriptor
- {
- get
- {
- if (_assessmentItemCategoryDescriptor == null)
- _assessmentItemCategoryDescriptor = _assessmentItemCategoryDescriptorId == null ? null : GeneratedArtifactStaticDependencies.DescriptorResolver.GetUri("AssessmentItemCategoryDescriptor", _assessmentItemCategoryDescriptorId.Value);
-
- return _assessmentItemCategoryDescriptor;
- }
- set
- {
- _assessmentItemCategoryDescriptor = value;
- _assessmentItemCategoryDescriptorId = default(int?);
- }
- }
- public virtual string AssessmentItemURI { get; set; }
- public virtual string ExpectedTimeAssessed { get; set; }
- public virtual string ItemText { get; set; }
- public virtual decimal? MaxRawScore { get; set; }
- public virtual string Nomenclature { get; set; }
// -------------------------------------------------------------
// =============================================================
@@ -7016,7 +6623,7 @@ public IDictionary Extensions
///
/// Read-only property that allows the Assessment discriminator value to be mapped to the resource reference.
///
- string Entities.Common.EdFi.IAssessmentItem.AssessmentDiscriminator
+ string Entities.Common.EdFi.IAssessmentAdministration.AssessmentDiscriminator
{
get { return AssessmentReferenceData?.Discriminator; }
set { }
@@ -7025,21 +6632,41 @@ string Entities.Common.EdFi.IAssessmentItem.AssessmentDiscriminator
///
/// Read-only property that allows the Assessment resource identifier value to be mapped to the resource reference.
///
- Guid? Entities.Common.EdFi.IAssessmentItem.AssessmentResourceId
+ Guid? Entities.Common.EdFi.IAssessmentAdministration.AssessmentResourceId
{
get { return AssessmentReferenceData?.Id; }
set { }
}
+ public virtual NHibernate.EducationOrganizationAggregate.EdFi.EducationOrganizationReferenceData AssigningEducationOrganizationReferenceData { get; set; }
+
+ ///
+ /// Read-only property that allows the AssigningEducationOrganization discriminator value to be mapped to the resource reference.
+ ///
+ string Entities.Common.EdFi.IAssessmentAdministration.AssigningEducationOrganizationDiscriminator
+ {
+ get { return AssigningEducationOrganizationReferenceData?.Discriminator; }
+ set { }
+ }
+
+ ///
+ /// Read-only property that allows the AssigningEducationOrganization resource identifier value to be mapped to the resource reference.
+ ///
+ Guid? Entities.Common.EdFi.IAssessmentAdministration.AssigningEducationOrganizationResourceId
+ {
+ get { return AssigningEducationOrganizationReferenceData?.Id; }
+ set { }
+ }
+
// -------------------------------------------------------------
//=============================================================
// Collections
// -------------------------------------------------------------
- private ICollection _assessmentItemLearningStandards;
- private ICollection _assessmentItemLearningStandardsCovariant;
- public virtual ICollection AssessmentItemLearningStandards
+ private ICollection _assessmentAdministrationAssessmentAdminstrationPeriods;
+ private ICollection _assessmentAdministrationAssessmentAdminstrationPeriodsCovariant;
+ public virtual ICollection AssessmentAdministrationAssessmentAdminstrationPeriods
{
get
{
@@ -7048,45 +6675,45 @@ public virtual ICollection(value);
+ _assessmentAdministrationAssessmentAdminstrationPeriods = value;
+ _assessmentAdministrationAssessmentAdminstrationPeriodsCovariant = new CovariantCollectionAdapter(value);
}
}
// Covariant version, visible only on the interface
- ICollection Entities.Common.EdFi.IAssessmentItem.AssessmentItemLearningStandards
+ ICollection Entities.Common.EdFi.IAssessmentAdministration.AssessmentAdministrationAssessmentAdminstrationPeriods
{
get
{
// -------------------------------------------------------------
// Back-reference is required by NHibernate for persistence.
// -------------------------------------------------------------
- foreach (var item in _assessmentItemLearningStandards)
- if (item.AssessmentItem == null)
- item.AssessmentItem = this;
+ foreach (var item in _assessmentAdministrationAssessmentAdminstrationPeriods)
+ if (item.AssessmentAdministration == null)
+ item.AssessmentAdministration = this;
// -------------------------------------------------------------
- return _assessmentItemLearningStandardsCovariant;
+ return _assessmentAdministrationAssessmentAdminstrationPeriodsCovariant;
}
set
{
- AssessmentItemLearningStandards = new HashSet(value.Cast());
+ AssessmentAdministrationAssessmentAdminstrationPeriods = new HashSet(value.Cast());
}
}
- private ICollection _assessmentItemPossibleResponses;
- private ICollection _assessmentItemPossibleResponsesCovariant;
- public virtual ICollection AssessmentItemPossibleResponses
+ private ICollection _assessmentAdministrationAssessmentBatteryParts;
+ private ICollection _assessmentAdministrationAssessmentBatteryPartsCovariant;
+ public virtual ICollection AssessmentAdministrationAssessmentBatteryParts
{
get
{
@@ -7095,38 +6722,38 @@ public virtual ICollection(value);
+ _assessmentAdministrationAssessmentBatteryParts = value;
+ _assessmentAdministrationAssessmentBatteryPartsCovariant = new CovariantCollectionAdapter(value);
}
}
// Covariant version, visible only on the interface
- ICollection Entities.Common.EdFi.IAssessmentItem.AssessmentItemPossibleResponses
+ ICollection Entities.Common.EdFi.IAssessmentAdministration.AssessmentAdministrationAssessmentBatteryParts
{
get
{
// -------------------------------------------------------------
// Back-reference is required by NHibernate for persistence.
// -------------------------------------------------------------
- foreach (var item in _assessmentItemPossibleResponses)
- if (item.AssessmentItem == null)
- item.AssessmentItem = this;
+ foreach (var item in _assessmentAdministrationAssessmentBatteryParts)
+ if (item.AssessmentAdministration == null)
+ item.AssessmentAdministration = this;
// -------------------------------------------------------------
- return _assessmentItemPossibleResponsesCovariant;
+ return _assessmentAdministrationAssessmentBatteryPartsCovariant;
}
set
{
- AssessmentItemPossibleResponses = new HashSet(value.Cast());
+ AssessmentAdministrationAssessmentBatteryParts = new HashSet(value.Cast());
}
}
@@ -7135,7 +6762,6 @@ public virtual ICollection _idPropertyByLookupProperty = new Dictionary(StringComparer.InvariantCultureIgnoreCase)
{
- { "AssessmentItemCategoryDescriptor", new LookupColumnDetails { PropertyName = "AssessmentItemCategoryDescriptorId", LookupTypeName = "AssessmentItemCategoryDescriptor"} },
};
Dictionary IHasLookupColumnPropertyMap.IdPropertyByLookupProperty
@@ -7150,8 +6776,9 @@ OrderedDictionary IHasPrimaryKeyValues.GetPrimaryKeyValues()
var keyValues = new OrderedDictionary();
// Add current key values
+ keyValues.Add("AdministrationIdentifier", AdministrationIdentifier);
keyValues.Add("AssessmentIdentifier", AssessmentIdentifier);
- keyValues.Add("IdentificationCode", IdentificationCode);
+ keyValues.Add("AssigningEducationOrganizationId", AssigningEducationOrganizationId);
keyValues.Add("Namespace", Namespace);
return keyValues;
@@ -7216,12 +6843,12 @@ public override int GetHashCode()
#endregion
bool ISynchronizable.Synchronize(object target)
{
- return this.SynchronizeTo((Entities.Common.EdFi.IAssessmentItem)target);
+ return this.SynchronizeTo((Entities.Common.EdFi.IAssessmentAdministration)target);
}
void IMappable.Map(object target)
{
- this.MapTo((Entities.Common.EdFi.IAssessmentItem) target, null);
+ this.MapTo((Entities.Common.EdFi.IAssessmentAdministration) target, null);
}
}
@@ -7229,19 +6856,19 @@ void IMappable.Map(object target)
#pragma warning disable 612, 618
///
- /// A class which represents the edfi.AssessmentItemLearningStandard table of the AssessmentItem aggregate in the ODS database.
+ /// A class which represents the edfi.AssessmentAdministrationAssessmentAdminstrationPeriod table of the AssessmentAdministration aggregate in the ODS database.
///
[Schema("edfi")]
[ExcludeFromCodeCoverage]
- public class AssessmentItemLearningStandard : EntityWithCompositeKey, IChildEntity,
- Entities.Common.EdFi.IAssessmentItemLearningStandard, IHasPrimaryKeyValues, IHasLookupColumnPropertyMap, IHasExtensions
+ public class AssessmentAdministrationAssessmentAdminstrationPeriod : EntityWithCompositeKey, IChildEntity,
+ Entities.Common.EdFi.IAssessmentAdministrationAssessmentAdminstrationPeriod, IHasPrimaryKeyValues, IHasLookupColumnPropertyMap, IHasExtensions
{
public virtual void SuspendReferenceAssignmentCheck() { }
- public AssessmentItemLearningStandard()
+ public AssessmentAdministrationAssessmentAdminstrationPeriod()
{
- Extensions = EntityExtensionsFactory.Instance == null ? new Dictionary() : new Dictionary(EntityExtensionsFactory.Instance.CreateRequiredEntityExtensions(this));
- AggregateExtensions = EntityExtensionsFactory.Instance == null ? new Dictionary() : new Dictionary(EntityExtensionsFactory.Instance.CreateAggregateExtensions());
+ Extensions = EntityExtensionsFactory.Instance == null ? new Dictionary() : new Dictionary(EntityExtensionsFactory.Instance.CreateRequiredEntityExtensions(this));
+ AggregateExtensions = EntityExtensionsFactory.Instance == null ? new Dictionary() : new Dictionary(EntityExtensionsFactory.Instance.CreateAggregateExtensions());
}
// restore warnings for inheritance from classes marked Obsolete
#pragma warning restore 612, 618
@@ -7250,16 +6877,24 @@ public AssessmentItemLearningStandard()
// Primary Key
// -------------------------------------------------------------
[DomainSignature, JsonIgnore]
- public virtual AssessmentItem AssessmentItem { get; set; }
+ public virtual AssessmentAdministration AssessmentAdministration { get; set; }
- Entities.Common.EdFi.IAssessmentItem IAssessmentItemLearningStandard.AssessmentItem
+ Entities.Common.EdFi.IAssessmentAdministration IAssessmentAdministrationAssessmentAdminstrationPeriod.AssessmentAdministration
{
- get { return AssessmentItem; }
- set { AssessmentItem = (AssessmentItem) value; }
+ get { return AssessmentAdministration; }
+ set { AssessmentAdministration = (AssessmentAdministration) value; }
}
[DomainSignature]
- public virtual string LearningStandardId { get; set; }
+ public virtual DateTime BeginDate
+ {
+ get { return _beginDate; }
+ //This is only stored as a Date in the DB and NHibernate will retrieve it using the default (local) DateTime.Kind. We must ensure it is set consistently for any equality/change evaluation.
+ set { _beginDate = new DateTime(value.Year, value.Month, value.Day); }
+ }
+
+ private DateTime _beginDate;
+
// -------------------------------------------------------------
// =============================================================
@@ -7270,6 +6905,25 @@ Entities.Common.EdFi.IAssessmentItem IAssessmentItemLearningStandard.AssessmentI
// =============================================================
// Properties
// -------------------------------------------------------------
+ public virtual DateTime? EndDate
+ {
+ get { return _endDate; }
+ set
+ {
+ //This is only stored as a Date in the DB and NHibernate will retrieve it using the default (local) DateTime.Kind. We must ensure it is set consistently for any equality/change evaluation.
+ if(value == null)
+ {
+ _endDate = null;
+ } else
+ {
+ var given = (DateTime) value;
+ _endDate = new DateTime(given.Year, given.Month, given.Day);
+ }
+ }
+ }
+
+ private DateTime? _endDate;
+
// -------------------------------------------------------------
// =============================================================
@@ -7314,26 +6968,6 @@ public IDictionary Extensions
// =============================================================
// Reference Data
// -------------------------------------------------------------
- public virtual NHibernate.LearningStandardAggregate.EdFi.LearningStandardReferenceData LearningStandardReferenceData { get; set; }
-
- ///
- /// Read-only property that allows the LearningStandard discriminator value to be mapped to the resource reference.
- ///
- string Entities.Common.EdFi.IAssessmentItemLearningStandard.LearningStandardDiscriminator
- {
- get { return LearningStandardReferenceData?.Discriminator; }
- set { }
- }
-
- ///
- /// Read-only property that allows the LearningStandard resource identifier value to be mapped to the resource reference.
- ///
- Guid? Entities.Common.EdFi.IAssessmentItemLearningStandard.LearningStandardResourceId
- {
- get { return LearningStandardReferenceData?.Id; }
- set { }
- }
-
// -------------------------------------------------------------
//=============================================================
@@ -7355,10 +6989,10 @@ Dictionary IHasLookupColumnPropertyMap.IdPropertyBy
OrderedDictionary IHasPrimaryKeyValues.GetPrimaryKeyValues()
{
// Get parent key values
- var keyValues = (AssessmentItem as IHasPrimaryKeyValues).GetPrimaryKeyValues();
+ var keyValues = (AssessmentAdministration as IHasPrimaryKeyValues).GetPrimaryKeyValues();
// Add current key values
- keyValues.Add("LearningStandardId", LearningStandardId);
+ keyValues.Add("BeginDate", BeginDate);
return keyValues;
}
@@ -7422,36 +7056,36 @@ public override int GetHashCode()
#endregion
bool ISynchronizable.Synchronize(object target)
{
- return this.SynchronizeTo((Entities.Common.EdFi.IAssessmentItemLearningStandard)target);
+ return this.SynchronizeTo((Entities.Common.EdFi.IAssessmentAdministrationAssessmentAdminstrationPeriod)target);
}
void IMappable.Map(object target)
{
- this.MapTo((Entities.Common.EdFi.IAssessmentItemLearningStandard) target, null);
+ this.MapTo((Entities.Common.EdFi.IAssessmentAdministrationAssessmentAdminstrationPeriod) target, null);
}
void IChildEntity.SetParent(object value)
{
- AssessmentItem = (AssessmentItem) value;
+ AssessmentAdministration = (AssessmentAdministration) value;
}
}
// disable warnings for inheritance from classes marked Obsolete within this generated code only
#pragma warning disable 612, 618
///
- /// A class which represents the edfi.AssessmentItemPossibleResponse table of the AssessmentItem aggregate in the ODS database.
+ /// A class which represents the edfi.AssessmentAdministrationAssessmentBatteryPart table of the AssessmentAdministration aggregate in the ODS database.
///
[Schema("edfi")]
[ExcludeFromCodeCoverage]
- public class AssessmentItemPossibleResponse : EntityWithCompositeKey, IChildEntity,
- Entities.Common.EdFi.IAssessmentItemPossibleResponse, IHasPrimaryKeyValues, IHasLookupColumnPropertyMap, IHasExtensions
+ public class AssessmentAdministrationAssessmentBatteryPart : EntityWithCompositeKey, IChildEntity,
+ Entities.Common.EdFi.IAssessmentAdministrationAssessmentBatteryPart, IHasPrimaryKeyValues, IHasLookupColumnPropertyMap, IHasExtensions
{
public virtual void SuspendReferenceAssignmentCheck() { }
- public AssessmentItemPossibleResponse()
+ public AssessmentAdministrationAssessmentBatteryPart()
{
- Extensions = EntityExtensionsFactory.Instance == null ? new Dictionary() : new Dictionary(EntityExtensionsFactory.Instance.CreateRequiredEntityExtensions(this));
- AggregateExtensions = EntityExtensionsFactory.Instance == null ? new Dictionary() : new Dictionary(EntityExtensionsFactory.Instance.CreateAggregateExtensions());
+ Extensions = EntityExtensionsFactory.Instance == null ? new Dictionary() : new Dictionary(EntityExtensionsFactory.Instance.CreateRequiredEntityExtensions(this));
+ AggregateExtensions = EntityExtensionsFactory.Instance == null ? new Dictionary() : new Dictionary(EntityExtensionsFactory.Instance.CreateAggregateExtensions());
}
// restore warnings for inheritance from classes marked Obsolete
#pragma warning restore 612, 618
@@ -7460,16 +7094,16 @@ public AssessmentItemPossibleResponse()
// Primary Key
// -------------------------------------------------------------
[DomainSignature, JsonIgnore]
- public virtual AssessmentItem AssessmentItem { get; set; }
+ public virtual AssessmentAdministration AssessmentAdministration { get; set; }
- Entities.Common.EdFi.IAssessmentItem IAssessmentItemPossibleResponse.AssessmentItem
+ Entities.Common.EdFi.IAssessmentAdministration IAssessmentAdministrationAssessmentBatteryPart.AssessmentAdministration
{
- get { return AssessmentItem; }
- set { AssessmentItem = (AssessmentItem) value; }
+ get { return AssessmentAdministration; }
+ set { AssessmentAdministration = (AssessmentAdministration) value; }
}
[DomainSignature]
- public virtual string ResponseValue { get; set; }
+ public virtual string AssessmentBatteryPartName { get; set; }
// -------------------------------------------------------------
// =============================================================
@@ -7480,8 +7114,6 @@ Entities.Common.EdFi.IAssessmentItem IAssessmentItemPossibleResponse.AssessmentI
// =============================================================
// Properties
// -------------------------------------------------------------
- public virtual bool? CorrectResponse { get; set; }
- public virtual string ResponseDescription { get; set; }
// -------------------------------------------------------------
// =============================================================
@@ -7526,6 +7158,26 @@ public IDictionary Extensions
// =============================================================
// Reference Data
// -------------------------------------------------------------
+ public virtual NHibernate.AssessmentBatteryPartAggregate.EdFi.AssessmentBatteryPartReferenceData AssessmentBatteryPartReferenceData { get; set; }
+
+ ///
+ /// Read-only property that allows the AssessmentBatteryPart discriminator value to be mapped to the resource reference.
+ ///
+ string Entities.Common.EdFi.IAssessmentAdministrationAssessmentBatteryPart.AssessmentBatteryPartDiscriminator
+ {
+ get { return AssessmentBatteryPartReferenceData?.Discriminator; }
+ set { }
+ }
+
+ ///
+ /// Read-only property that allows the AssessmentBatteryPart resource identifier value to be mapped to the resource reference.
+ ///
+ Guid? Entities.Common.EdFi.IAssessmentAdministrationAssessmentBatteryPart.AssessmentBatteryPartResourceId
+ {
+ get { return AssessmentBatteryPartReferenceData?.Id; }
+ set { }
+ }
+
// -------------------------------------------------------------
//=============================================================
@@ -7547,10 +7199,10 @@ Dictionary IHasLookupColumnPropertyMap.IdPropertyBy
OrderedDictionary IHasPrimaryKeyValues.GetPrimaryKeyValues()
{
// Get parent key values
- var keyValues = (AssessmentItem as IHasPrimaryKeyValues).GetPrimaryKeyValues();
+ var keyValues = (AssessmentAdministration as IHasPrimaryKeyValues).GetPrimaryKeyValues();
// Add current key values
- keyValues.Add("ResponseValue", ResponseValue);
+ keyValues.Add("AssessmentBatteryPartName", AssessmentBatteryPartName);
return keyValues;
}
@@ -7614,81 +7266,140 @@ public override int GetHashCode()
#endregion
bool ISynchronizable.Synchronize(object target)
{
- return this.SynchronizeTo((Entities.Common.EdFi.IAssessmentItemPossibleResponse)target);
+ return this.SynchronizeTo((Entities.Common.EdFi.IAssessmentAdministrationAssessmentBatteryPart)target);
}
void IMappable.Map(object target)
{
- this.MapTo((Entities.Common.EdFi.IAssessmentItemPossibleResponse) target, null);
+ this.MapTo((Entities.Common.EdFi.IAssessmentAdministrationAssessmentBatteryPart) target, null);
}
void IChildEntity.SetParent(object value)
{
- AssessmentItem = (AssessmentItem) value;
+ AssessmentAdministration = (AssessmentAdministration) value;
}
}
}
-// Aggregate: AssessmentItemCategoryDescriptor
+// Aggregate: AssessmentBatteryPart
-namespace EdFi.Ods.Entities.NHibernate.AssessmentItemCategoryDescriptorAggregate.EdFi
+namespace EdFi.Ods.Entities.NHibernate.AssessmentBatteryPartAggregate.EdFi
{
+ ///
+ /// Represents a read-only reference to the entity.
+ ///
+ public class AssessmentBatteryPartReferenceData : IHasPrimaryKeyValues
+ {
+ // =============================================================
+ // Primary Key
+ // -------------------------------------------------------------
+ public virtual string AssessmentBatteryPartName { get; set; }
+ public virtual string AssessmentIdentifier { get; set; }
+ public virtual string Namespace { get; set; }
+ // -------------------------------------------------------------
+
+ ///
+ /// The id of the referenced entity (used as the resource identifier in the API).
+ ///
+ public virtual Guid? Id { get; set; }
+
+ ///
+ /// Gets and sets the discriminator value which identifies the concrete sub-type of the referenced entity
+ /// when that entity has been derived; otherwise null.
+ ///
+ public virtual string Discriminator { get; set; }
+
+ // Provide primary key information
+ OrderedDictionary IHasPrimaryKeyValues.GetPrimaryKeyValues()
+ {
+ // Initialize a new dictionary to hold the key values
+ var keyValues = new OrderedDictionary();
+
+ // Add current key values
+ keyValues.Add("AssessmentBatteryPartName", AssessmentBatteryPartName);
+ keyValues.Add("AssessmentIdentifier", AssessmentIdentifier);
+ keyValues.Add("Namespace", Namespace);
+
+ return keyValues;
+ }
+
+ #region Overrides for Equals() and GetHashCode()
+ public override bool Equals(object obj)
+ {
+ var compareTo = obj as IHasPrimaryKeyValues;
+
+ if (ReferenceEquals(this, compareTo))
+ return true;
+
+ if (compareTo == null)
+ return false;
+
+ var theseKeys = (this as IHasPrimaryKeyValues).GetPrimaryKeyValues();
+ var thoseKeys = compareTo.GetPrimaryKeyValues();
+
+ foreach (DictionaryEntry entry in theseKeys)
+ {
+ if (!entry.Value.Equals(thoseKeys[entry.Key]))
+ return false;
+ }
+
+ return true;
+ }
+
+ public override int GetHashCode()
+ {
+ var keyValues = (this as IHasPrimaryKeyValues).GetPrimaryKeyValues();
+
+ if (keyValues.Count == 0)
+ return base.GetHashCode();
+
+ var hashCode = new HashCode();
+
+ foreach (DictionaryEntry entry in keyValues)
+ {
+ hashCode.Add(entry.Value);
+ }
+
+ return hashCode.ToHashCode();
+ }
+ #endregion
+ }
+
// disable warnings for inheritance from classes marked Obsolete within this generated code only
#pragma warning disable 612, 618
///
- /// A class which represents the edfi.AssessmentItemCategoryDescriptor table of the AssessmentItemCategoryDescriptor aggregate in the ODS database.
+ /// A class which represents the edfi.AssessmentBatteryPart table of the AssessmentBatteryPart aggregate in the ODS database.
///
[Schema("edfi")]
[ExcludeFromCodeCoverage]
- public class AssessmentItemCategoryDescriptor : DescriptorAggregate.EdFi.Descriptor,
- Entities.Common.EdFi.IAssessmentItemCategoryDescriptor, IHasPrimaryKeyValues, IHasLookupColumnPropertyMap, IEdFiDescriptor
+ public class AssessmentBatteryPart : AggregateRootWithCompositeKey,
+ Entities.Common.EdFi.IAssessmentBatteryPart, IHasPrimaryKeyValues, IHasLookupColumnPropertyMap, IHasExtensions
{
+ public virtual void SuspendReferenceAssignmentCheck() { }
+
+ public AssessmentBatteryPart()
+ {
+ AssessmentBatteryPartObjectiveAssessments = new HashSet();
+ Extensions = EntityExtensionsFactory.Instance == null ? new Dictionary() : new Dictionary(EntityExtensionsFactory.Instance.CreateRequiredEntityExtensions(this));
+ AggregateExtensions = EntityExtensionsFactory.Instance == null ? new Dictionary() : new Dictionary(EntityExtensionsFactory.Instance.CreateAggregateExtensions());
+ }
+// restore warnings for inheritance from classes marked Obsolete
+#pragma warning restore 612, 618
// =============================================================
// Primary Key
// -------------------------------------------------------------
[DomainSignature]
- public virtual int AssessmentItemCategoryDescriptorId
- {
- get { return base.DescriptorId; }
- set { base.DescriptorId = value; }
- }
-
+ public virtual string AssessmentBatteryPartName { get; set; }
+ [DomainSignature]
+ public virtual string AssessmentIdentifier { get; set; }
+ [DomainSignature]
+ public virtual string Namespace { get; set; }
// -------------------------------------------------------------
// =============================================================
// Inherited Properties
// -------------------------------------------------------------
- string IDescriptor.CodeValue
- {
- get { return CodeValue; }
- set { CodeValue = value; }
- }
- string IDescriptor.Description
- {
- get { return Description; }
- set { Description = value; }
- }
- DateTime? IDescriptor.EffectiveBeginDate
- {
- get { return EffectiveBeginDate; }
- set { EffectiveBeginDate = value; }
- }
- DateTime? IDescriptor.EffectiveEndDate
- {
- get { return EffectiveEndDate; }
- set { EffectiveEndDate = value; }
- }
- string IDescriptor.Namespace
- {
- get { return Namespace; }
- set { Namespace = value; }
- }
- string IDescriptor.ShortDescription
- {
- get { return ShortDescription; }
- set { ShortDescription = value; }
- }
// -------------------------------------------------------------
// =============================================================
@@ -7704,16 +7415,112 @@ string IDescriptor.ShortDescription
// =============================================================
// Extensions
// -------------------------------------------------------------
+ private IDictionary _extensions;
+
+ public IDictionary Extensions
+ {
+ get => _extensions;
+ set
+ {
+ // If the _extensions is null, this is being assigned from the constructor
+ // for the first time and no special handling is required
+ if (_extensions != null)
+ {
+ // For extensions that have already been initialized by the extensions factory,
+ // we need to copy any "implicit" extension object entries over to the incoming
+ // value dictionary being assigned by NHibernate because it won't have them,
+ // but they must be there for correct handling of extensions for the API.
+ foreach (var key in _extensions.Keys)
+ {
+ if (!value.Contains(key))
+ {
+ value[key] = _extensions[key];
+ }
+ }
+ }
+
+ _extensions = value;
+ }
+ }
+
+ public IDictionary AggregateExtensions { get; set; }
// -------------------------------------------------------------
// =============================================================
// Reference Data
// -------------------------------------------------------------
+ public virtual NHibernate.AssessmentAggregate.EdFi.AssessmentReferenceData AssessmentReferenceData { get; set; }
+
+ ///
+ /// Read-only property that allows the Assessment discriminator value to be mapped to the resource reference.
+ ///
+ string Entities.Common.EdFi.IAssessmentBatteryPart.AssessmentDiscriminator
+ {
+ get { return AssessmentReferenceData?.Discriminator; }
+ set { }
+ }
+
+ ///
+ /// Read-only property that allows the Assessment resource identifier value to be mapped to the resource reference.
+ ///
+ Guid? Entities.Common.EdFi.IAssessmentBatteryPart.AssessmentResourceId
+ {
+ get { return AssessmentReferenceData?.Id; }
+ set { }
+ }
+
// -------------------------------------------------------------
//=============================================================
// Collections
// -------------------------------------------------------------
+
+ private ICollection _assessmentBatteryPartObjectiveAssessments;
+ private ICollection _assessmentBatteryPartObjectiveAssessmentsCovariant;
+ public virtual ICollection AssessmentBatteryPartObjectiveAssessments
+ {
+ get
+ {
+ // -------------------------------------------------------------
+ // On-demand deserialization logic to attach reverse reference of children
+ // due to ServiceStack's lack of [OnDeserialized] attribute support.
+ // Back-reference is required by NHibernate for persistence.
+ // -------------------------------------------------------------
+ foreach (var item in _assessmentBatteryPartObjectiveAssessments)
+ if (item.AssessmentBatteryPart == null)
+ item.AssessmentBatteryPart = this;
+ // -------------------------------------------------------------
+
+ return _assessmentBatteryPartObjectiveAssessments;
+ }
+ set
+ {
+ _assessmentBatteryPartObjectiveAssessments = value;
+ _assessmentBatteryPartObjectiveAssessmentsCovariant = new CovariantCollectionAdapter(value);
+ }
+ }
+
+ // Covariant version, visible only on the interface
+ ICollection Entities.Common.EdFi.IAssessmentBatteryPart.AssessmentBatteryPartObjectiveAssessments
+ {
+ get
+ {
+ // -------------------------------------------------------------
+ // Back-reference is required by NHibernate for persistence.
+ // -------------------------------------------------------------
+ foreach (var item in _assessmentBatteryPartObjectiveAssessments)
+ if (item.AssessmentBatteryPart == null)
+ item.AssessmentBatteryPart = this;
+ // -------------------------------------------------------------
+
+ return _assessmentBatteryPartObjectiveAssessmentsCovariant;
+ }
+ set
+ {
+ AssessmentBatteryPartObjectiveAssessments = new HashSet(value.Cast());
+ }
+ }
+
// -------------------------------------------------------------
// Provide lookup property map
@@ -7733,7 +7540,9 @@ OrderedDictionary IHasPrimaryKeyValues.GetPrimaryKeyValues()
var keyValues = new OrderedDictionary();
// Add current key values
- keyValues.Add("AssessmentItemCategoryDescriptorId", AssessmentItemCategoryDescriptorId);
+ keyValues.Add("AssessmentBatteryPartName", AssessmentBatteryPartName);
+ keyValues.Add("AssessmentIdentifier", AssessmentIdentifier);
+ keyValues.Add("Namespace", Namespace);
return keyValues;
}
@@ -7797,77 +7606,55 @@ public override int GetHashCode()
#endregion
bool ISynchronizable.Synchronize(object target)
{
- return this.SynchronizeTo((Entities.Common.EdFi.IAssessmentItemCategoryDescriptor)target);
+ return this.SynchronizeTo((Entities.Common.EdFi.IAssessmentBatteryPart)target);
}
void IMappable.Map(object target)
{
- this.MapTo((Entities.Common.EdFi.IAssessmentItemCategoryDescriptor) target, null);
+ this.MapTo((Entities.Common.EdFi.IAssessmentBatteryPart) target, null);
}
}
-}
-// Aggregate: AssessmentItemResultDescriptor
-
-namespace EdFi.Ods.Entities.NHibernate.AssessmentItemResultDescriptorAggregate.EdFi
-{
// disable warnings for inheritance from classes marked Obsolete within this generated code only
#pragma warning disable 612, 618
///
- /// A class which represents the edfi.AssessmentItemResultDescriptor table of the AssessmentItemResultDescriptor aggregate in the ODS database.
+ /// A class which represents the edfi.AssessmentBatteryPartObjectiveAssessment table of the AssessmentBatteryPart aggregate in the ODS database.
///
[Schema("edfi")]
[ExcludeFromCodeCoverage]
- public class AssessmentItemResultDescriptor : DescriptorAggregate.EdFi.Descriptor,
- Entities.Common.EdFi.IAssessmentItemResultDescriptor, IHasPrimaryKeyValues, IHasLookupColumnPropertyMap, IEdFiDescriptor
+ public class AssessmentBatteryPartObjectiveAssessment : EntityWithCompositeKey, IChildEntity,
+ Entities.Common.EdFi.IAssessmentBatteryPartObjectiveAssessment, IHasPrimaryKeyValues, IHasLookupColumnPropertyMap, IHasExtensions
{
+ public virtual void SuspendReferenceAssignmentCheck() { }
+
+ public AssessmentBatteryPartObjectiveAssessment()
+ {
+ Extensions = EntityExtensionsFactory.Instance == null ? new Dictionary() : new Dictionary(EntityExtensionsFactory.Instance.CreateRequiredEntityExtensions(this));
+ AggregateExtensions = EntityExtensionsFactory.Instance == null ? new Dictionary() : new Dictionary(EntityExtensionsFactory.Instance.CreateAggregateExtensions());
+ }
+// restore warnings for inheritance from classes marked Obsolete
+#pragma warning restore 612, 618
// =============================================================
// Primary Key
// -------------------------------------------------------------
- [DomainSignature]
- public virtual int AssessmentItemResultDescriptorId
+ [DomainSignature, JsonIgnore]
+ public virtual AssessmentBatteryPart AssessmentBatteryPart { get; set; }
+
+ Entities.Common.EdFi.IAssessmentBatteryPart IAssessmentBatteryPartObjectiveAssessment.AssessmentBatteryPart
{
- get { return base.DescriptorId; }
- set { base.DescriptorId = value; }
+ get { return AssessmentBatteryPart; }
+ set { AssessmentBatteryPart = (AssessmentBatteryPart) value; }
}
-
+
+ [DomainSignature]
+ public virtual string IdentificationCode { get; set; }
// -------------------------------------------------------------
// =============================================================
// Inherited Properties
// -------------------------------------------------------------
- string IDescriptor.CodeValue
- {
- get { return CodeValue; }
- set { CodeValue = value; }
- }
- string IDescriptor.Description
- {
- get { return Description; }
- set { Description = value; }
- }
- DateTime? IDescriptor.EffectiveBeginDate
- {
- get { return EffectiveBeginDate; }
- set { EffectiveBeginDate = value; }
- }
- DateTime? IDescriptor.EffectiveEndDate
- {
- get { return EffectiveEndDate; }
- set { EffectiveEndDate = value; }
- }
- string IDescriptor.Namespace
- {
- get { return Namespace; }
- set { Namespace = value; }
- }
- string IDescriptor.ShortDescription
- {
- get { return ShortDescription; }
- set { ShortDescription = value; }
- }
// -------------------------------------------------------------
// =============================================================
@@ -7883,11 +7670,60 @@ string IDescriptor.ShortDescription
// =============================================================
// Extensions
// -------------------------------------------------------------
+ private IDictionary _extensions;
+
+ public IDictionary Extensions
+ {
+ get => _extensions;
+ set
+ {
+ // If the _extensions is null, this is being assigned from the constructor
+ // for the first time and no special handling is required
+ if (_extensions != null)
+ {
+ // For extensions that have already been initialized by the extensions factory,
+ // we need to copy any "implicit" extension object entries over to the incoming
+ // value dictionary being assigned by NHibernate because it won't have them,
+ // but they must be there for correct handling of extensions for the API.
+ foreach (var key in _extensions.Keys)
+ {
+ if (!value.Contains(key))
+ {
+ value[key] = _extensions[key];
+ }
+ }
+ }
+
+ _extensions = value;
+ }
+ }
+
+ public IDictionary AggregateExtensions { get; set; }
// -------------------------------------------------------------
// =============================================================
// Reference Data
// -------------------------------------------------------------
+ public virtual NHibernate.ObjectiveAssessmentAggregate.EdFi.ObjectiveAssessmentReferenceData ObjectiveAssessmentReferenceData { get; set; }
+
+ ///
+ /// Read-only property that allows the ObjectiveAssessment discriminator value to be mapped to the resource reference.
+ ///
+ string Entities.Common.EdFi.IAssessmentBatteryPartObjectiveAssessment.ObjectiveAssessmentDiscriminator
+ {
+ get { return ObjectiveAssessmentReferenceData?.Discriminator; }
+ set { }
+ }
+
+ ///
+ /// Read-only property that allows the ObjectiveAssessment resource identifier value to be mapped to the resource reference.
+ ///
+ Guid? Entities.Common.EdFi.IAssessmentBatteryPartObjectiveAssessment.ObjectiveAssessmentResourceId
+ {
+ get { return ObjectiveAssessmentReferenceData?.Id; }
+ set { }
+ }
+
// -------------------------------------------------------------
//=============================================================
@@ -7908,11 +7744,11 @@ Dictionary IHasLookupColumnPropertyMap.IdPropertyBy
// Provide primary key information
OrderedDictionary IHasPrimaryKeyValues.GetPrimaryKeyValues()
{
- // Initialize a new dictionary to hold the key values
- var keyValues = new OrderedDictionary();
+ // Get parent key values
+ var keyValues = (AssessmentBatteryPart as IHasPrimaryKeyValues).GetPrimaryKeyValues();
// Add current key values
- keyValues.Add("AssessmentItemResultDescriptorId", AssessmentItemResultDescriptorId);
+ keyValues.Add("IdentificationCode", IdentificationCode);
return keyValues;
}
@@ -7976,37 +7812,41 @@ public override int GetHashCode()
#endregion
bool ISynchronizable.Synchronize(object target)
{
- return this.SynchronizeTo((Entities.Common.EdFi.IAssessmentItemResultDescriptor)target);
+ return this.SynchronizeTo((Entities.Common.EdFi.IAssessmentBatteryPartObjectiveAssessment)target);
}
void IMappable.Map(object target)
{
- this.MapTo((Entities.Common.EdFi.IAssessmentItemResultDescriptor) target, null);
+ this.MapTo((Entities.Common.EdFi.IAssessmentBatteryPartObjectiveAssessment) target, null);
}
+ void IChildEntity.SetParent(object value)
+ {
+ AssessmentBatteryPart = (AssessmentBatteryPart) value;
+ }
}
}
-// Aggregate: AssessmentPeriodDescriptor
+// Aggregate: AssessmentCategoryDescriptor
-namespace EdFi.Ods.Entities.NHibernate.AssessmentPeriodDescriptorAggregate.EdFi
+namespace EdFi.Ods.Entities.NHibernate.AssessmentCategoryDescriptorAggregate.EdFi
{
// disable warnings for inheritance from classes marked Obsolete within this generated code only
#pragma warning disable 612, 618
///
- /// A class which represents the edfi.AssessmentPeriodDescriptor table of the AssessmentPeriodDescriptor aggregate in the ODS database.
+ /// A class which represents the edfi.AssessmentCategoryDescriptor table of the AssessmentCategoryDescriptor aggregate in the ODS database.
///
[Schema("edfi")]
[ExcludeFromCodeCoverage]
- public class AssessmentPeriodDescriptor : DescriptorAggregate.EdFi.Descriptor,
- Entities.Common.EdFi.IAssessmentPeriodDescriptor, IHasPrimaryKeyValues, IHasLookupColumnPropertyMap, IEdFiDescriptor
+ public class AssessmentCategoryDescriptor : DescriptorAggregate.EdFi.Descriptor,
+ Entities.Common.EdFi.IAssessmentCategoryDescriptor, IHasPrimaryKeyValues, IHasLookupColumnPropertyMap, IEdFiDescriptor
{
// =============================================================
// Primary Key
// -------------------------------------------------------------
[DomainSignature]
- public virtual int AssessmentPeriodDescriptorId
+ public virtual int AssessmentCategoryDescriptorId
{
get { return base.DescriptorId; }
set { base.DescriptorId = value; }
@@ -8091,7 +7931,7 @@ OrderedDictionary IHasPrimaryKeyValues.GetPrimaryKeyValues()
var keyValues = new OrderedDictionary();
// Add current key values
- keyValues.Add("AssessmentPeriodDescriptorId", AssessmentPeriodDescriptorId);
+ keyValues.Add("AssessmentCategoryDescriptorId", AssessmentCategoryDescriptorId);
return keyValues;
}
@@ -8155,37 +7995,37 @@ public override int GetHashCode()
#endregion
bool ISynchronizable.Synchronize(object target)
{
- return this.SynchronizeTo((Entities.Common.EdFi.IAssessmentPeriodDescriptor)target);
+ return this.SynchronizeTo((Entities.Common.EdFi.IAssessmentCategoryDescriptor)target);
}
void IMappable.Map(object target)
{
- this.MapTo((Entities.Common.EdFi.IAssessmentPeriodDescriptor) target, null);
+ this.MapTo((Entities.Common.EdFi.IAssessmentCategoryDescriptor) target, null);
}
}
}
-// Aggregate: AssessmentReportingMethodDescriptor
+// Aggregate: AssessmentIdentificationSystemDescriptor
-namespace EdFi.Ods.Entities.NHibernate.AssessmentReportingMethodDescriptorAggregate.EdFi
+namespace EdFi.Ods.Entities.NHibernate.AssessmentIdentificationSystemDescriptorAggregate.EdFi
{
// disable warnings for inheritance from classes marked Obsolete within this generated code only
#pragma warning disable 612, 618
///
- /// A class which represents the edfi.AssessmentReportingMethodDescriptor table of the AssessmentReportingMethodDescriptor aggregate in the ODS database.
+ /// A class which represents the edfi.AssessmentIdentificationSystemDescriptor table of the AssessmentIdentificationSystemDescriptor aggregate in the ODS database.
///
[Schema("edfi")]
[ExcludeFromCodeCoverage]
- public class AssessmentReportingMethodDescriptor : DescriptorAggregate.EdFi.Descriptor,
- Entities.Common.EdFi.IAssessmentReportingMethodDescriptor, IHasPrimaryKeyValues, IHasLookupColumnPropertyMap, IEdFiDescriptor
+ public class AssessmentIdentificationSystemDescriptor : DescriptorAggregate.EdFi.Descriptor,
+ Entities.Common.EdFi.IAssessmentIdentificationSystemDescriptor, IHasPrimaryKeyValues, IHasLookupColumnPropertyMap, IEdFiDescriptor
{
// =============================================================
// Primary Key
// -------------------------------------------------------------
[DomainSignature]
- public virtual int AssessmentReportingMethodDescriptorId
+ public virtual int AssessmentIdentificationSystemDescriptorId
{
get { return base.DescriptorId; }
set { base.DescriptorId = value; }
@@ -8270,7 +8110,7 @@ OrderedDictionary IHasPrimaryKeyValues.GetPrimaryKeyValues()
var keyValues = new OrderedDictionary();
// Add current key values
- keyValues.Add("AssessmentReportingMethodDescriptorId", AssessmentReportingMethodDescriptorId);
+ keyValues.Add("AssessmentIdentificationSystemDescriptorId", AssessmentIdentificationSystemDescriptorId);
return keyValues;
}
@@ -8334,31 +8174,31 @@ public override int GetHashCode()
#endregion
bool ISynchronizable.Synchronize(object target)
{
- return this.SynchronizeTo((Entities.Common.EdFi.IAssessmentReportingMethodDescriptor)target);
+ return this.SynchronizeTo((Entities.Common.EdFi.IAssessmentIdentificationSystemDescriptor)target);
}
void IMappable.Map(object target)
{
- this.MapTo((Entities.Common.EdFi.IAssessmentReportingMethodDescriptor) target, null);
+ this.MapTo((Entities.Common.EdFi.IAssessmentIdentificationSystemDescriptor) target, null);
}
}
}
-// Aggregate: AssessmentScoreRangeLearningStandard
+// Aggregate: AssessmentItem
-namespace EdFi.Ods.Entities.NHibernate.AssessmentScoreRangeLearningStandardAggregate.EdFi
+namespace EdFi.Ods.Entities.NHibernate.AssessmentItemAggregate.EdFi
{
///
- /// Represents a read-only reference to the entity.
+ /// Represents a read-only reference to the entity.
///
- public class AssessmentScoreRangeLearningStandardReferenceData : IHasPrimaryKeyValues
+ public class AssessmentItemReferenceData : IHasPrimaryKeyValues
{
// =============================================================
// Primary Key
// -------------------------------------------------------------
public virtual string AssessmentIdentifier { get; set; }
+ public virtual string IdentificationCode { get; set; }
public virtual string Namespace { get; set; }
- public virtual string ScoreRangeId { get; set; }
// -------------------------------------------------------------
///
@@ -8380,8 +8220,8 @@ OrderedDictionary IHasPrimaryKeyValues.GetPrimaryKeyValues()
// Add current key values
keyValues.Add("AssessmentIdentifier", AssessmentIdentifier);
+ keyValues.Add("IdentificationCode", IdentificationCode);
keyValues.Add("Namespace", Namespace);
- keyValues.Add("ScoreRangeId", ScoreRangeId);
return keyValues;
}
@@ -8432,20 +8272,21 @@ public override int GetHashCode()
#pragma warning disable 612, 618
///
- /// A class which represents the edfi.AssessmentScoreRangeLearningStandard table of the AssessmentScoreRangeLearningStandard aggregate in the ODS database.
+ /// A class which represents the edfi.AssessmentItem table of the AssessmentItem aggregate in the ODS database.
///
[Schema("edfi")]
[ExcludeFromCodeCoverage]
- public class AssessmentScoreRangeLearningStandard : AggregateRootWithCompositeKey,
- Entities.Common.EdFi.IAssessmentScoreRangeLearningStandard, IHasPrimaryKeyValues, IHasLookupColumnPropertyMap, IHasExtensions
+ public class AssessmentItem : AggregateRootWithCompositeKey,
+ Entities.Common.EdFi.IAssessmentItem, IHasPrimaryKeyValues, IHasLookupColumnPropertyMap, IHasExtensions
{
public virtual void SuspendReferenceAssignmentCheck() { }
- public AssessmentScoreRangeLearningStandard()
+ public AssessmentItem()
{
- AssessmentScoreRangeLearningStandardLearningStandards = new HashSet();
- Extensions = EntityExtensionsFactory.Instance == null ? new Dictionary() : new Dictionary(EntityExtensionsFactory.Instance.CreateRequiredEntityExtensions(this));
- AggregateExtensions = EntityExtensionsFactory.Instance == null ? new Dictionary() : new Dictionary(EntityExtensionsFactory.Instance.CreateAggregateExtensions());
+ AssessmentItemLearningStandards = new HashSet();
+ AssessmentItemPossibleResponses = new HashSet();
+ Extensions = EntityExtensionsFactory.Instance == null ? new Dictionary() : new Dictionary(EntityExtensionsFactory.Instance.CreateRequiredEntityExtensions(this));
+ AggregateExtensions = EntityExtensionsFactory.Instance == null ? new Dictionary() : new Dictionary(EntityExtensionsFactory.Instance.CreateAggregateExtensions());
}
// restore warnings for inheritance from classes marked Obsolete
#pragma warning restore 612, 618
@@ -8456,9 +8297,9 @@ public AssessmentScoreRangeLearningStandard()
[DomainSignature]
public virtual string AssessmentIdentifier { get; set; }
[DomainSignature]
- public virtual string Namespace { get; set; }
+ public virtual string IdentificationCode { get; set; }
[DomainSignature]
- public virtual string ScoreRangeId { get; set; }
+ public virtual string Namespace { get; set; }
// -------------------------------------------------------------
// =============================================================
@@ -8469,43 +8310,45 @@ public AssessmentScoreRangeLearningStandard()
// =============================================================
// Properties
// -------------------------------------------------------------
- public virtual int? AssessmentReportingMethodDescriptorId
+ public virtual int? AssessmentItemCategoryDescriptorId
{
get
{
- if (_assessmentReportingMethodDescriptorId == default(int?))
- _assessmentReportingMethodDescriptorId = string.IsNullOrWhiteSpace(_assessmentReportingMethodDescriptor) ? default(int?) : GeneratedArtifactStaticDependencies.DescriptorResolver.GetDescriptorId("AssessmentReportingMethodDescriptor", _assessmentReportingMethodDescriptor);
+ if (_assessmentItemCategoryDescriptorId == default(int?))
+ _assessmentItemCategoryDescriptorId = string.IsNullOrWhiteSpace(_assessmentItemCategoryDescriptor) ? default(int?) : GeneratedArtifactStaticDependencies.DescriptorResolver.GetDescriptorId("AssessmentItemCategoryDescriptor", _assessmentItemCategoryDescriptor);
- return _assessmentReportingMethodDescriptorId;
+ return _assessmentItemCategoryDescriptorId;
}
set
{
- _assessmentReportingMethodDescriptorId = value;
- _assessmentReportingMethodDescriptor = null;
+ _assessmentItemCategoryDescriptorId = value;
+ _assessmentItemCategoryDescriptor = null;
}
}
- private int? _assessmentReportingMethodDescriptorId;
- private string _assessmentReportingMethodDescriptor;
+ private int? _assessmentItemCategoryDescriptorId;
+ private string _assessmentItemCategoryDescriptor;
- public virtual string AssessmentReportingMethodDescriptor
+ public virtual string AssessmentItemCategoryDescriptor
{
get
{
- if (_assessmentReportingMethodDescriptor == null)
- _assessmentReportingMethodDescriptor = _assessmentReportingMethodDescriptorId == null ? null : GeneratedArtifactStaticDependencies.DescriptorResolver.GetUri("AssessmentReportingMethodDescriptor", _assessmentReportingMethodDescriptorId.Value);
+ if (_assessmentItemCategoryDescriptor == null)
+ _assessmentItemCategoryDescriptor = _assessmentItemCategoryDescriptorId == null ? null : GeneratedArtifactStaticDependencies.DescriptorResolver.GetUri("AssessmentItemCategoryDescriptor", _assessmentItemCategoryDescriptorId.Value);
- return _assessmentReportingMethodDescriptor;
+ return _assessmentItemCategoryDescriptor;
}
set
{
- _assessmentReportingMethodDescriptor = value;
- _assessmentReportingMethodDescriptorId = default(int?);
+ _assessmentItemCategoryDescriptor = value;
+ _assessmentItemCategoryDescriptorId = default(int?);
}
}
- public virtual string IdentificationCode { get; set; }
- public virtual string MaximumScore { get; set; }
- public virtual string MinimumScore { get; set; }
+ public virtual string AssessmentItemURI { get; set; }
+ public virtual string ExpectedTimeAssessed { get; set; }
+ public virtual string ItemText { get; set; }
+ public virtual decimal? MaxRawScore { get; set; }
+ public virtual string Nomenclature { get; set; }
// -------------------------------------------------------------
// =============================================================
@@ -8555,7 +8398,7 @@ public IDictionary Extensions
///
/// Read-only property that allows the Assessment discriminator value to be mapped to the resource reference.
///
- string Entities.Common.EdFi.IAssessmentScoreRangeLearningStandard.AssessmentDiscriminator
+ string Entities.Common.EdFi.IAssessmentItem.AssessmentDiscriminator
{
get { return AssessmentReferenceData?.Discriminator; }
set { }
@@ -8564,41 +8407,21 @@ string Entities.Common.EdFi.IAssessmentScoreRangeLearningStandard.AssessmentDisc
///
/// Read-only property that allows the Assessment resource identifier value to be mapped to the resource reference.
///
- Guid? Entities.Common.EdFi.IAssessmentScoreRangeLearningStandard.AssessmentResourceId
+ Guid? Entities.Common.EdFi.IAssessmentItem.AssessmentResourceId
{
get { return AssessmentReferenceData?.Id; }
set { }
}
- public virtual NHibernate.ObjectiveAssessmentAggregate.EdFi.ObjectiveAssessmentReferenceData ObjectiveAssessmentReferenceData { get; set; }
-
- ///
- /// Read-only property that allows the ObjectiveAssessment discriminator value to be mapped to the resource reference.
- ///
- string Entities.Common.EdFi.IAssessmentScoreRangeLearningStandard.ObjectiveAssessmentDiscriminator
- {
- get { return ObjectiveAssessmentReferenceData?.Discriminator; }
- set { }
- }
-
- ///
- /// Read-only property that allows the ObjectiveAssessment resource identifier value to be mapped to the resource reference.
- ///
- Guid? Entities.Common.EdFi.IAssessmentScoreRangeLearningStandard.ObjectiveAssessmentResourceId
- {
- get { return ObjectiveAssessmentReferenceData?.Id; }
- set { }
- }
-
// -------------------------------------------------------------
//=============================================================
// Collections
// -------------------------------------------------------------
- private ICollection _assessmentScoreRangeLearningStandardLearningStandards;
- private ICollection _assessmentScoreRangeLearningStandardLearningStandardsCovariant;
- public virtual ICollection AssessmentScoreRangeLearningStandardLearningStandards
+ private ICollection _assessmentItemLearningStandards;
+ private ICollection _assessmentItemLearningStandardsCovariant;
+ public virtual ICollection AssessmentItemLearningStandards
{
get
{
@@ -8607,38 +8430,85 @@ public virtual ICollection(value);
- }
+ _assessmentItemLearningStandards = value;
+ _assessmentItemLearningStandardsCovariant = new CovariantCollectionAdapter(value);
+ }
}
// Covariant version, visible only on the interface
- ICollection Entities.Common.EdFi.IAssessmentScoreRangeLearningStandard.AssessmentScoreRangeLearningStandardLearningStandards
+ ICollection