Date: Thu, 28 Mar 2024 19:01:41 -0500 (CDT) Message-ID: <592265921.30178.1711670501739@PUBEDFIPRDWEB5.public.local> Subject: Exported From Confluence MIME-Version: 1.0 Content-Type: multipart/related; boundary="----=_Part_30177_1204456448.1711670501732" ------=_Part_30177_1204456448.1711670501732 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Content-Location: file:///C:/exported.html
In this example, the extensions needed by the organization are for a stu= dent transcript. The steps below are a continuation of the How-To articles = described in the Ed-Fi Data Standard v2.0 documentation, = span>XM= L Schema - Extensions Framework Guide.
The steps can be summarized as:
Create an extension to the Ed-Fi Core Schema, called <= strong>EXTENSION-Ed-Fi-Core.xsd, and place it in the = span>C:\Ed-Fi-ODS-Implementation\Extensions\Schemas&= nbsp;folder.
More information about how the Ed-Fi Core schema extensions are created = can be found in the following series of How-To articles in the Ed-Fi = Data Standard v2.0 documentation :
The resulting XML Schema file is shown below. It is important=
to note that core schema extension file must be able to resolve the r=
eference to the Ed-Fi Core Schema file (i.e., in the schemaLocation=
code> attribute).
<?xml= version=3D"1.0" encoding=3D"UTF-8"?> <xs:schema xmlns:xs=3D"http://www.w3.org/2001/XMLSchema" xmlns=3D"http:/= /ed-fi.org/0200" xmlns:ann=3D"http://ed-fi.org/annotation" xmlns:altova=3D"= http://www.altova.com/xml-schema-extensions" targetNamespace=3D"http://ed-f= i.org/0200" elementFormDefault=3D"qualified" attributeFormDefault=3D"unqual= ified"> <xs:include schemaLocation=3D"..\..\..\Ed-Fi-ODS\Application\EdFi.Od= s.CodeGen\App_Packages\Ed-Fi\Schema\Ed-Fi-Core.xsd"/> <xs:annotation><xs:documentation>=3D=3D=3D=3D=3D Ed-Fi 2.0 = Extensions =3D=3D=3D=3D=3D</xs:documentation></xs:annotation> <xs:annotation><xs:documentation>=3D=3D=3D=3D=3D Domain Ent= ities =3D=3D=3D=3D=3D</xs:documentation></xs:annotation> <xs:complexType name=3D"EXTENSION-PostSecondaryOrganization"> =09=09<xs:annotation><xs:appinfo><ann:TypeGroup>Domain En= tity</ann:TypeGroup></xs:appinfo></xs:annotation> <xs:sequence> <xs:element name=3D"NameOfInstitution" type=3D"NameOfInstitu= tion"/> <xs:element name=3D"InstitutionLevel" type=3D"EXTENSION-Inst= itutionLevelType"/> <xs:element name=3D"InstitutionControl" type=3D"EXTENSION-In= stitutionControlType"/> <xs:element name=3D"AcceptanceIndicator" type=3D"xs:boolean"= /> </xs:sequence> </xs:complexType> <xs:complexType name=3D"EXTENSION-StudentAcademicRecordExtension">= ; <xs:annotation><xs:appinfo><ann:TypeGroup>Domain = Entity</ann:TypeGroup></xs:appinfo></xs:annotation> =09 <xs:complexContent> <xs:extension base=3D"EXTENSION-StudentAcademicRecordRestric= tion"> <xs:sequence> <xs:element name=3D"ClassRanking" type=3D"EXTENSION-= ClassRankingExtension"/> <xs:element name=3D"SubmissionCertification" type=3D= "EXTENSION-SubmissionCertificationType"/> <xs:element name=3D"PostSecondaryOrganizationReferen= ce" type=3D"EXTENSION-PostSecondaryOrganizationReferenceType"/> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> <xs:complexType name=3D"EXTENSION-StudentAcademicRecordRestriction"&= gt; =09 <xs:annotation><xs:appinfo><ann:TypeGroup>Domain En= tity</ann:TypeGroup></xs:appinfo></xs:annotation> <xs:complexContent> <xs:restriction base=3D"StudentAcademicRecord"> <xs:sequence> <xs:element name=3D"CumulativeEarnedCredits" type=3D= "Credits" minOccurs=3D"0"/> <xs:element name=3D"CumulativeAttemptedCredits" type= =3D"Credits" minOccurs=3D"0"/> <xs:element name=3D"CumulativeGradePointsEarned" typ= e=3D"GPA" minOccurs=3D"0"/> <xs:element name=3D"CumulativeGradePointAverage" typ= e=3D"GPA" minOccurs=3D"0"/> <xs:element name=3D"GradeValueQualifier" type=3D"Gra= deValueQualifier" minOccurs=3D"0"/> <xs:element name=3D"AcademicHonor" type=3D"AcademicH= onor" minOccurs=3D"0" maxOccurs=3D"unbounded"/> <xs:element name=3D"Recognition" type=3D"Recognition= " minOccurs=3D"0" maxOccurs=3D"unbounded"/> <xs:element name=3D"ProjectedGraduationDate" type=3D= "xs:date" minOccurs=3D"0"/> <xs:element name=3D"SessionEarnedCredits" type=3D"Cr= edits" minOccurs=3D"0"/> <xs:element name=3D"SessionAttemptedCredits" type=3D= "Credits" minOccurs=3D"0"/> <xs:element name=3D"SessionGradePointsEarned" type= =3D"GPA" minOccurs=3D"0"/> <xs:element name=3D"SessionGradePointAverage" type= =3D"GPA" minOccurs=3D"0"/> <xs:element name=3D"Diploma" type=3D"Diploma" minOcc= urs=3D"0" maxOccurs=3D"unbounded"/> <xs:element name=3D"StudentReference" type=3D"Studen= tReferenceType"/> <xs:element name=3D"EducationOrganizationReference" = type=3D"EducationOrganizationReferenceType"/> <xs:element name=3D"SchoolYear" type=3D"SchoolYearTy= pe"/> <xs:element name=3D"Term" type=3D"TermDescriptorRefe= renceType"/> <xs:element name=3D"ReportCardReference" type=3D"Rep= ortCardReferenceType" minOccurs=3D"0" maxOccurs=3D"unbounded"/> </xs:sequence> </xs:restriction> </xs:complexContent> </xs:complexType> <xs:annotation><xs:documentation>=3D=3D=3D=3D=3D Extended R= eference =3D=3D=3D=3D=3D</xs:documentation></xs:annotation> <xs:complexType name=3D"EXTENSION-PostSecondaryOrganizationReference= Type"> <xs:annotation><xs:appinfo><ann:TypeGroup>Extende= d Reference</ann:TypeGroup></xs:appinfo></xs:annotation> <xs:complexContent> <xs:extension base=3D"ReferenceType"> =09 <xs:sequence> =09 <xs:element name=3D"PostSecondaryOrganizationIdentity"= type=3D"EXTENSION-PostSecondaryOrganizationIdentityType" minOccurs=3D"0"/&= gt; =09 </xs:sequence> =09 </xs:extension> </xs:complexContent> </xs:complexType> <xs:complexType name=3D"EXTENSION-PostSecondaryOrganizationIdentityT= ype"> <xs:annotation><xs:appinfo><ann:TypeGroup>Identit= y</ann:TypeGroup></xs:appinfo></xs:annotation> <xs:sequence> =09=09=09<xs:element name=3D"NameOfInstitution" type=3D"NameOfInstitutio= n"/> =09 </xs:sequence> </xs:complexType> <xs:annotation><xs:documentation>=3D=3D=3D=3D=3D Common =3D= =3D=3D=3D=3D</xs:documentation></xs:annotation> <xs:complexType name=3D"EXTENSION-ClassRankingExtension"> <xs:annotation><xs:appinfo><ann:TypeGroup>Common&= lt;/ann:TypeGroup></xs:appinfo></xs:annotation> =09=09<xs:complexContent> <xs:extension base=3D"ClassRanking"> <xs:sequence> <xs:element name=3D"SpecialEducationGraduationStatus= " type=3D"EXTENSION-SpecialEducationGraduationStatusType"/> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> <xs:annotation><xs:documentation>=3D=3D=3D=3D=3D Enumeratio= n =3D=3D=3D=3D=3D</xs:documentation></xs:annotation> <xs:simpleType name=3D"EXTENSION-InstitutionControlType"> <xs:annotation><xs:appinfo><ann:TypeGroup>Enumera= tion</ann:TypeGroup></xs:appinfo></xs:annotation> =09=09 <xs:restriction base=3D"xs:token"> <xs:enumeration value=3D"Public"/> <xs:enumeration value=3D"PrivateNonProfit"/> <xs:enumeration value=3D"PrivateForProfit"/> </xs:restriction> </xs:simpleType> <xs:simpleType name=3D"EXTENSION-InstitutionLevelType"> <xs:annotation><xs:appinfo><ann:TypeGroup>Enumera= tion</ann:TypeGroup></xs:appinfo></xs:annotation> =09=09 <xs:restriction base=3D"xs:token"> <xs:enumeration value=3D"Four Year"/> <xs:enumeration value=3D"Two To Four Year"/> <xs:enumeration value=3D"Less Than Two Year"/> </xs:restriction> </xs:simpleType> <xs:simpleType name=3D"EXTENSION-SpecialEducationGraduationStatusTyp= e"> <xs:annotation><xs:appinfo><ann:TypeGroup>Enumera= tion</ann:TypeGroup></xs:appinfo></xs:annotation> =09 <xs:restriction base=3D"xs:token"> <xs:enumeration value=3D"Completion of IEP and Reached Age 2= 2"/> <xs:enumeration value=3D"Completion of IEP and Access to Ser= vices, Employment, or Education"/> <xs:enumeration value=3D"Completion of IEP and Demonstrated = Self-Help Skills"/> </xs:restriction> </xs:simpleType> <xs:simpleType name=3D"EXTENSION-SubmissionCertificationType"> <xs:annotation><xs:appinfo><ann:TypeGroup>Enumera= tion</ann:TypeGroup></xs:appinfo></xs:annotation> <xs:restriction base=3D"xs:token"> <xs:enumeration value=3D"Official"/> <xs:enumeration value=3D"Unofficial"/> </xs:restriction> </xs:simpleType> </xs:schema>
Create an custom interchange file, called EXTE= NSION-Interchange-HSGeneratedStudentTranscript.xsd, and= place it in the C:\Ed-Fi-ODS-Implementation\Extensions= \Schemas folder. More information about how this file is created can be found = in How To:= Extend the Ed-Fi XML Schema (Part 5).
The resulting custom interchange= schema file is found below. It is important to note that the <= code style=3D"line-height: 1.4285715;">schemaLocation should be a valid reference the schema file = that contains the extension definition (i.e., the EXTENSION-Ed-Fi-Core.xsd = file created in the previous step).
<?xml= version=3D"1.0" encoding=3D"UTF-8"?> <!-- (c)2015 Ed-Fi Alliance, LLC. All Rights Reserved. --> <xs:schema xmlns:xs=3D"http://www.w3.org/2001/XMLSchema" xmlns=3D"http:/= /ed-fi.org/0200" targetNamespace=3D"http://ed-fi.org/0200" elementFormDefau= lt=3D"qualified" attributeFormDefault=3D"unqualified"> <xs:include schemaLocation=3D"EXTENSION-Ed-Fi-Core.xsd"/> <xs:annotation> <xs:documentation>=3D=3D=3D=3D=3D High School Generated Stude= nt Transcript Exchange Model =3D=3D=3D=3D=3D</xs:documentation> </xs:annotation> <xs:element name=3D"InterchangeHSGeneratedStudentTranscript"> <xs:annotation> <xs:documentation>This "concrete" exchange standard is to= load a student transcript generated by a high school for a postsecondary i= nstitution, contining the following information: Student identification and contact information Standard NCLB demographics, omitting any details on disabilities. K-12 enrollment history indicating the various schools attended Academic record showing semester and final grades and credits earned for ea= ch secondary course taken Scores for the yearly state standardized tests (summary scores only) Yearly and final credits earned and grade point average (GPA) Graduation plan and date graduated The student transcript interchange should indicate whether it is an officia= l or unofficial submission Postsecondary Institution(s) that the student is attending </xs:documentation> </xs:annotation> <xs:complexType> <xs:choice maxOccurs=3D"unbounded"> <xs:element name=3D"Student" type=3D"Student"/> <xs:element name=3D"StudentSchoolAssociation" type=3D"St= udentSchoolAssociation"/> <xs:element name=3D"StudentAcademicRecord" type=3D"EXTEN= SION-StudentAcademicRecordExtension"/> <xs:element name=3D"CourseTranscript" type=3D"CourseTran= script"/> <xs:element name=3D"ReportCard" type=3D"ReportCard"/> <xs:element name=3D"Grade" type=3D"Grade"/> <xs:element name=3D"StudentSectionAssociation" type=3D"S= tudentSectionAssociation"/> <xs:element name=3D"Section" type=3D"Section"/> <xs:element name=3D"CourseOffering" type=3D"CourseOfferi= ng"/> <xs:element name=3D"Course" type=3D"Course"/> <xs:element name=3D"StudentAssessment" type=3D"StudentAs= sessment"/> <xs:element name=3D"School" type=3D"School"/> <xs:element name=3D"PostSecondaryOrganization" type=3D"E= XTENSION-PostSecondaryOrganization"/> </xs:choice> </xs:complexType> </xs:element> </xs:schema>
Create an extension SQL script called 0001-Ext= ensions.sql and place it in the C:\= Ed-Fi-ODS-Implementation\Database\Structure\EdFi folder= . This script defines the database schema for the extension.
IF NOT E= XISTS (SELECT 1 FROM sys.schemas WHERE name =3D 'extension') BEGIN EXEC('CREATE SCHEMA [extension] AUTHORIZATION dbo') END GO -- ************************************************************************= ******** -- InstitutionControlType -- ************************************************************************= ******** CREATE TABLE extension.InstitutionControlType( =09InstitutionControlTypeId int IDENTITY(1,1) NOT NULL, =09CodeValue nvarchar(50) NOT NULL, =09[Description] nvarchar(1024) NOT NULL, =09ShortDescription nvarchar(450) NOT NULL, =09Id uniqueidentifier NOT NULL, =09LastModifiedDate datetime NOT NULL, =09CreateDate datetime NOT NULL, =09CONSTRAINT PK_InstitutionControlType PRIMARY KEY CLUSTERED (InstitutionC= ontrolTypeId ASC) ) =20 ALTER TABLE extension.InstitutionControlType ADD CONSTRAINT [InstitutionCon= trolType_DF_Id] DEFAULT (newid()) FOR [Id] ALTER TABLE extension.InstitutionControlType ADD CONSTRAINT [InstitutionCon= trolType_DF_LastModifiedDate] DEFAULT (getdate()) FOR [LastModifiedDate] ALTER TABLE extension.InstitutionControlType ADD CONSTRAINT [InstitutionCon= trolType_CreateDate] DEFAULT (getdate()) FOR [CreateDate] GO -- ************************************************************************= ******** -- InstitutionLevelType -- ************************************************************************= ******** CREATE TABLE extension.InstitutionLevelType( =09InstitutionLevelTypeId int IDENTITY(1,1) NOT NULL, =09CodeValue nvarchar(50) NOT NULL, =09[Description] nvarchar(1024) NOT NULL, =09ShortDescription nvarchar(450) NOT NULL, =09Id uniqueidentifier NOT NULL, =09LastModifiedDate datetime NOT NULL, =09CreateDate datetime NOT NULL, =09CONSTRAINT PK_InstitutionLevelType PRIMARY KEY CLUSTERED (InstitutionLev= elTypeId ASC) ) =20 ALTER TABLE extension.InstitutionLevelType ADD CONSTRAINT [InstitutionLevel= Type_DF_Id] DEFAULT (newid()) FOR [Id] ALTER TABLE extension.InstitutionLevelType ADD CONSTRAINT [InstitutionLevel= Type_DF_LastModifiedDate] DEFAULT (getdate()) FOR [LastModifiedDate] ALTER TABLE extension.InstitutionLevelType ADD CONSTRAINT [InstitutionLevel= Type_CreateDate] DEFAULT (getdate()) FOR [CreateDate] GO -- ************************************************************************= ******** -- SpecialEducationGraduationStatusType -- ************************************************************************= ******** CREATE TABLE extension.SpecialEducationGraduationStatusType( =09SpecialEducationGraduationStatusTypeId int IDENTITY(1,1) NOT NULL, =09CodeValue nvarchar(50) NOT NULL, =09[Description] nvarchar(1024) NOT NULL, =09ShortDescription nvarchar(450) NOT NULL, =09Id uniqueidentifier NOT NULL, =09LastModifiedDate datetime NOT NULL, =09CreateDate datetime NOT NULL, =09CONSTRAINT PK_SpecialEducationGraduationStatusType PRIMARY KEY CLUSTERED= (SpecialEducationGraduationStatusTypeId ASC) ) =20 ALTER TABLE extension.SpecialEducationGraduationStatusType ADD CONSTRAINT [= SpecialEducationGraduationStatusType_DF_Id] DEFAULT (newid()) FOR [Id] ALTER TABLE extension.SpecialEducationGraduationStatusType ADD CONSTRAINT [= SpecialEducationGraduationStatusType_DF_LastModifiedDate] DEFAULT (getdate= ()) FOR [LastModifiedDate] ALTER TABLE extension.SpecialEducationGraduationStatusType ADD CONSTRAINT [= SpecialEducationGraduationStatusType_CreateDate] DEFAULT (getdate()) FOR [= CreateDate] GO -- ************************************************************************= ******** -- SubmissionCertificationType -- ************************************************************************= ******** CREATE TABLE extension.SubmissionCertificationType( =09SubmissionCertificationTypeId int IDENTITY(1,1) NOT NULL, =09CodeValue nvarchar(50) NOT NULL, =09[Description] nvarchar(1024) NOT NULL, =09ShortDescription nvarchar(450) NOT NULL, =09Id uniqueidentifier NOT NULL, =09LastModifiedDate datetime NOT NULL, =09CreateDate datetime NOT NULL, =09CONSTRAINT PK_SubmissionCertificationType PRIMARY KEY CLUSTERED (Submiss= ionCertificationTypeId ASC) ) =20 ALTER TABLE extension.SubmissionCertificationType ADD CONSTRAINT [Submissio= nCertificationType_DF_Id] DEFAULT (newid()) FOR [Id] ALTER TABLE extension.SubmissionCertificationType ADD CONSTRAINT [Submissio= nCertificationType_DF_LastModifiedDate] DEFAULT (getdate()) FOR [LastModif= iedDate] ALTER TABLE extension.SubmissionCertificationType ADD CONSTRAINT [Submissio= nCertificationType_CreateDate] DEFAULT (getdate()) FOR [CreateDate] GO -- ************************************************************************= ******** -- PostSecondaryOrganization -- ************************************************************************= ******** CREATE TABLE extension.PostSecondaryOrganization( [NameOfInstitution] nvarchar(75) NOT NULL, =09[InstitutionLevelTypeId] int NOT NULL, =09[InstitutionControlTypeId] int NOT NULL, [AcceptanceIndicator] bit NOT NULL, =09[Id] uniqueidentifier NOT NULL, =09[LastModifiedDate] datetime NOT NULL, =09[CreateDate] datetime NOT NULL, =09CONSTRAINT PK_PostSecondaryOrganization PRIMARY KEY CLUSTERED (NameOfIns= titution ASC) ) =20 ALTER TABLE extension.PostSecondaryOrganization ADD CONSTRAINT [PostSeconda= ryOrganization_DF_Id] DEFAULT (newid()) FOR [Id] ALTER TABLE extension.PostSecondaryOrganization ADD CONSTRAINT [PostSeconda= ryOrganization_DF_LastModifiedDate] DEFAULT (getdate()) FOR [LastModifiedD= ate] ALTER TABLE extension.PostSecondaryOrganization ADD CONSTRAINT [PostSeconda= ryOrganization_CreateDate] DEFAULT (getdate()) FOR [CreateDate] GO ALTER TABLE [extension].[PostSecondaryOrganization] ADD CONSTRAINT [FK_Post= SecondaryOrganization_InstitutionLevelTypeId] FOREIGN KEY([InstitutionLevel= TypeId]) REFERENCES [extension].[InstitutionLevelType] ([InstitutionLevelTypeId]) GO ALTER TABLE [extension].[PostSecondaryOrganization] ADD CONSTRAINT [FK_Post= SecondaryOrganization_InstitutionControlTypeId] FOREIGN KEY([InstitutionCon= trolTypeId]) REFERENCES [extension].[InstitutionControlType] ([InstitutionControlTypeId]= ) GO -- ************************************************************************= ******** -- StudentAcademicRecordExtension -- ************************************************************************= ******** CREATE TABLE [extension].[StudentAcademicRecordExtension]( [StudentUSI] int NOT NULL, [EducationOrganizationId] int NOT NULL, [SchoolYear] smallint NOT NULL, [TermDescriptorId] int NOT NULL, [NameOfInstitution] nvarchar(75) NOT NULL, [SubmissionCertificationTypeId] int NOT NULL, CONSTRAINT [PK_StudentAcademicRecordExtension] PRIMARY KEY CLUSTERED ([= StudentUSI], [EducationOrganizationId], [SchoolYear], [TermDescriptorId]) ) GO ALTER TABLE [extension].[StudentAcademicRecordExtension] ADD CONSTRAINT [FK= _StudentAcademicRecordExtension_NameOfInstitution] FOREIGN KEY([NameOfInsti= tution]) REFERENCES [extension].[PostSecondaryOrganization] ([NameOfInstitution]) GO ALTER TABLE [extension].[StudentAcademicRecordExtension] ADD CONSTRAINT [FK= _StudentAcademicRecordExtension_SubmissionCertificationTypeId] FOREIGN KEY(= [SubmissionCertificationTypeId]) REFERENCES [extension].[SubmissionCertificationType] ([SubmissionCertificat= ionTypeId]) GO ALTER TABLE [extension].[StudentAcademicRecordExtension] ADD CONSTRAINT [FK= _StudentAcademicRecordExtension_StudentAcademicRecord]=20 FOREIGN KEY ([StudentUSI], [EducationOrganizationId], [SchoolYear], [Te= rmDescriptorId]) REFERENCES [edfi].[StudentAcademicRecord]([StudentUSI], [EducationOrgan= izationId], [SchoolYear], [TermDescriptorId]) go -- ************************************************************************= ******** -- StudentAcademicRecordClassRankingExtension -- ************************************************************************= ******** CREATE TABLE [extension].[StudentAcademicRecordClassRankingExtension]( [StudentUSI] int NOT NULL, [SchoolYear] smallint NOT NULL, [TermDescriptorId] int NOT NULL, [EducationOrganizationId] int NOT NULL, =09[SpecialEducationGraduationStatusTypeId] int NOT NULL, [CreateDate] datetime CONSTRAINT [StudentAcademicRecor= dClassRanking_DF_CreateDate] DEFAULT (getdate()) NOT NULL, CONSTRAINT [PK_StudentAcademicRecordClassRankingExtension] PRIMARY KEY = CLUSTERED ([StudentUSI], [SchoolYear], [TermDescriptorId], [EducationOrgani= zationId]) ) GO ALTER TABLE [extension].[StudentAcademicRecordClassRankingExtension] ADD CO= NSTRAINT [FK_StudentAcademicRecordClassRankingExtension_StudentAcademicReco= rdExtension]=20 FOREIGN KEY ([StudentUSI], [EducationOrganizationId], [SchoolYear], [Te= rmDescriptorId]) REFERENCES [extension].[StudentAcademicRecordExtension]([StudentUSI], [= EducationOrganizationId], [SchoolYear], [TermDescriptorId]) go ALTER TABLE [extension].[StudentAcademicRecordClassRankingExtension] ADD CO= NSTRAINT [FK_StudentAcademicRecordClassRankingExtension_SpecialEducationGra= duationStatusTypeId] FOREIGN KEY([SpecialEducationGraduationStatusTypeId]) REFERENCES [extension].[SpecialEducationGraduationStatusType] ([SpecialEduc= ationGraduationStatusTypeId]) GO
Create an extension API metadata file called DomainMetadata= -Extension.xml and place it in the C:\Ed-Fi-ODS-= Implementation\Extensions\Metadata folder. This file will def= ine the new types and domain entities, and ensure the code generation proce= ss will process the entity.
<?xml= version=3D"1.0" encoding=3D"utf-8" ?> <AggregateExtensions> <Aggregate root=3D"InstitutionControlType"><Entity table=3D"Insti= tutionControlType" schema=3D"extension" /> </Aggregate> <Aggregate root=3D"InstitutionLevelType"> <Entity table=3D"InstitutionLevelType" schema=3D"extension" /> </Aggregate> <Aggregate root=3D"SpecialEducationGraduationStatusType"> <Entity table=3D"SpecialEducationGraduationStatusType" schema=3D"extens= ion" /> </Aggregate> <Aggregate root=3D"SubmissionCertificationType"> <Entity table=3D"SubmissionCertificationType" schema=3D"extension" />= ; </Aggregate> <Aggregate root=3D"PostSecondaryOrganization"> <Entity table=3D"PostSecondaryOrganization" schema=3D"extension" /> </Aggregate> </AggregateExtensions>
Create an extension API metadata file called InterchangeOrd= erMetadata-Extension.xml and place it in the C:\= Ed-Fi-ODS-Implementation\Extensions\Metadata folder. This fil= e defines the position of the new custom interchange in the load order, ens= uring that the interchange loads correctly.
<?xml= version=3D"1.0" encoding=3D"utf-8"?> <!--=20 Order of the Interchange elements and the Element elements is important.= =20 This metadata will list all aggregate types that are part of the intercha= nge.=20 This extension metadata will replace the core metadata and contain all in= terchanges and elements for the implementation. --> <Interchanges> <Interchange name=3D"Descriptors" order=3D"1"> <Element name=3D"GradeLevelDescriptor"/> <Element name=3D"AcademicSubjectDescriptor"/> </Interchange> <Interchange name=3D"Standards" order=3D"2"> <Element name=3D"LearningStandard"/> <Element name=3D"LearningObjective"/> </Interchange> =20 <Interchange name=3D"EducationOrganization" order=3D"3"> <Element name=3D"StateEducationAgency"/> <Element name=3D"EducationServiceCenter"/> <Element name=3D"LocalEducationAgency"/> <Element name=3D"School"/> <Element name=3D"EducationOrganizationNetwork"/> <Element name=3D"AccountabilityRating"/> <Element name=3D"Location"/> <Element name=3D"ClassPeriod"/> <Element name=3D"Course"/> <Element name=3D"Program"/> <Element name=3D"FeederSchoolAssociation"/> <Element name=3D"EducationOrganizationPeerAssociation"/> <Element name=3D"EducationOrganizationNetworkAssociation"/> </Interchange> <Interchange name=3D"EducationOrgCalendar" order=3D"4"> <Element name=3D"CalendarDate"/> <Element name=3D"GradingPeriod"/> <Element name=3D"AcademicWeek"/> <Element name=3D"Session"/> </Interchange> <Interchange name=3D"MasterSchedule" order=3D"5"> <Element name=3D"CourseOffering"/> </Interchange> <Interchange name=3D"StaffAssociation" order=3D"6"> <Element name=3D"Staff"/> </Interchange> <Interchange name=3D"Student" order=3D"7"> <Element name=3D"Student"/> </Interchange> =20 <Interchange name=3D"Parent" order=3D"8"> <Element name=3D"Parent"/> </Interchange> =20 <Interchange name=3D"AssessmentMetadata" order=3D"9"> <Element name=3D"AssessmentFamily"/> <Element name=3D"Assessment"/> <Element name=3D"AssessmentItem"/> <Element name=3D"ObjectiveAssessment"/> </Interchange> <Interchange name=3D"StudentCohort" order=3D"10"> <Element name=3D"Cohort"/> <Element name=3D"StudentCohortAssociation"/> <Element name=3D"StaffCohortAssociation"/> </Interchange> <Interchange name=3D"StudentAssessment" order=3D"11"> <Element name=3D"StudentAssessment"/> </Interchange> <Interchange name=3D"StudentIntervention" order=3D"12"> <Element name=3D"Intervention"/> <Element name=3D"StudentInterventionAssociation"/> <Element name=3D"EducationContent"/> <Element name=3D"InterventionPrescription"/> <Element name=3D"InterventionStudy"/> </Interchange> <Interchange name=3D"StudentTranscript" order=3D"13"> <Element name=3D"StudentAcademicRecord"/> <Element name=3D"CourseTranscript"/> </Interchange> <Interchange name=3D"StudentProgram" order=3D"14"> <Element name=3D"StudentProgramAssociation"/> <Element name=3D"RestraintEvent"/> <Element name=3D"StudentSpecialEducationProgramAssociation"/> </Interchange> <Interchange name=3D"StudentEnrollment" order=3D"15"> <Element name=3D"GraduationPlan"/> </Interchange> <Interchange name=3D"StudentDiscipline" order=3D"16"> <Element name=3D"DisciplineIncident"/> <Element name=3D"StudentDisciplineIncidentAssociation"/> <Element name=3D"DisciplineAction"/> </Interchange> <Interchange name=3D"PostSecondaryEvent" order=3D"17"> <Element name=3D"PostSecondaryEvent"/> </Interchange> <Interchange name=3D"StudentAttendance" order=3D"18"> </Interchange> <Interchange name=3D"StudentGrade" order=3D"19"> <Element name=3D"Grade"/> <Element name=3D"ReportCard"/> <Element name=3D"CompetencyObjective"/> <Element name=3D"LearningObjective"/> <Element name=3D"StudentCompetencyObjective"/> </Interchange> <Interchange name=3D"StudentGradebook" order=3D"20"> <Element name=3D"GradebookEntry"/> </Interchange> =20 <Interchange name=3D"Finance" order=3D"21"> <Element name=3D"Account"/> <Element name=3D"Budget"/> <Element name=3D"ContractedStaff"/> <Element name=3D"Budget"/> <Element name=3D"Actual"/> <Element name=3D"Payroll"/> </Interchange> <Interchange name=3D"HSGeneratedStudentTranscript" order=3D"22"> =09<Element name=3D"Student"/> =09<Element name=3D"StudentSchoolAssociation"/> =09<Element name=3D"StudentAcademicRecord"/> =09<Element name=3D"CourseTranscript"/> =09<Element name=3D"ReportCard"/> =09<Element name=3D"Grade"/> =09<Element name=3D"StudentSectionAssociation"/> =09<Element name=3D"Section"/> =09<Element name=3D"CourseOffering"/> =09<Element name=3D"Course"/> =09<Element name=3D"StudentAssessment"/> =09<Element name=3D"School"/> <Element name=3D"PostSecondaryOrganization"/>=09 </Interchange> </Interchanges>
Re-run the code generation steps outlined in the Getting Started Guide (=
i.e., from a PowerShell prompt run the Initialize-PowershellForD=
evelopment.ps
script, followed by the initdev
=
command). Then run the application and view the Ed-Fi ODS / API =
using Swagger. The following new API resource should be visible:
The following link is a ZIP archive containing source files for this ext= ensibility sample.
Student Transcript Source Files=