PESC Transcript XML

This document outlines the contents and format of the Alberta Education PESCTranscript XML as delivered by the Ministry of Education, Government of Alberta.

PESC PASI End Point Services (PESC High School Transcript v1.5.0)

With Release 5.01 of PASI an updated version of the PESC transcript (based on v1.5.0 of the PESC High School Transcript standard) will be available from PASI.

The following documents are the PASI specifications for the updated PESC High School transcript that is produced by PASI

This transcript can be requested using the Request Transcript service and it can be retrieved using the Retrieve Transcript service.

The Transcript Processing Agent generates the PESC XML at the same time that the PASI Transcript XML and the PDF is generated. This section describes the mapping between the PASI Transcript XML and the PESC High School Transcript.

HighSchoolTranscript High Level XML View

The following xml illustrates a PESC High School Transcript from a high level.

<HighSchoolTranscript> 
  <TransmissionData>
    <Source/>
    <Destination/>
  </TransmissionData> 
  <Student>
    <Person/>
    <AcademicRecord> <!-- 0 or 1 of these for Alberta Education -->
      <School/>
      <AcademicAward/>
      <AcademicSession>
        <Course/>
      </AcademicSession>
      <Course/>
    </AcademicRecord>
    <AcademicRecord> <!-- 0 or many of these for external credentials -->
      <School/>
      <AcademicAward/>
    </AcademicRecord>
  </Student>
  <UserDefinedExtensions/>
</HighSchoolTranscript>

The xml can be styled using PESC Transcript Stylesheet.

PESC High School Transcript (v1.5.0) XML Generation

The Transcript Processing Agent generates the PESC XML at the same time that the PASI Transcript XML and the PDF is generated. This section describes the mapping between the PASI Transcript XML and the PESC High School Transcript.

<TransmissionData>

Mapping of what goes into each of the corresponding fields on <TransmissionData>.

Data ElementSource
Document IDNewly Generated GUID
CreatedDateTimeCurrent Date & Time
DocumentTypeCodeIf the document order is connected to a transcript request that is stored in the [TranscriptRequest] table then use the RequestDocumentType otherwise use “StudentRequest”.
TransmissionType“Original”
Source/Organization
<Organization> 
  <APAS>AB00000000</apas> 
  <OrganizationName>Alberta Education</OrganizationName>
  <LocalOrganizationID>
    <LocalOrganizationIDCode>AB00000000</LocalOrganizationIDCode>
    <LocalOrganizationIDQualifier>AB</LocalOrganizationIDQualifier>
  </LocalOrganizationID>
  <Contacts>
    <Email>
      <EmailAddress>studentrecords@gov.ab.ca</EmailAddress>
    </Email>
  </Contacts>
</Organization>

Note: “AB00000000” represents Alberta Education to APAS and the PSIs.

Destination/Organization

If the transcript has a recipient that is an APAS PSI then use:

<Organization> 
  <APAS>__*1*__</APAS>
  <OrganizationName>__*2*__</OrganizationName>
  <LocalOrganizationID>
    <LocalOrganizationIDCode>*3*</LocalOrganizationIDCode>
    <LocalOrganizationIDQualifier>AB</LocalOrganizationIDQualifier>
  </LocalOrganizationID>
</Organization>

If the transcript has a recipient that is not APAS PSI then use:

<Organization> 
  <MutuallyDefined>__*1*__</MutuallyDefined>
  <OrganizationName>__*2*__</OrganizationName>
</Organization>

Where:

  • *1* is from the DocumentOrderItem, Use “N/A” as a value if the transcript is not being sent electronically.
  • *2* is the name of that institution as supplied in the transcript request.
  • *3* Requesting ApplyAlberta Institution from the ApplyAlberta Transcript Request or Document Order Item.
DocumentProcessCode“PRODUCTION” if in the production environment
“TEST” otherwise
RequestTrackingIDUse the Request Tracking ID from the Document Order.

<Student>.<Person>

Mapping of what goes into each of the corresponding fields on <Person>.

Data ElementSource
AgencyAssignedID
<AgencyIdentifier>
  <AgencyAssignedID>*1*</AgencyAssignedID>
  <AgencyCode>Province<AgencyCode>
  <AgencyName>Alberta Education</AgencyName>
  <CountryCode>CA</CountryCode>
  <StateProvinceCode>AB</StateProvinceCode>
</AgencyIdentifier>

Where *1* is the unformatted ASN of the student from AlbertaHighSchoolTranscript/Identification/StateProvinceId.

Birth
<Birth>
  <BirthDate>*1*</BirthDate>
<Birth>

Where *1* is the unformatted ASN of the student from AlbertaHighSchoolTranscript/Identification/BirthDate.
Formatted as an xs:date.

Name
<Name>
  <FirstName>*1*</FirstName>
  <MiddleName>*2*</MiddleName>
  <LastName>*3*</LastName>
</Name>

Where

  • *1* is the value from AlbertaHighSchoolTranscript/Identification/StudentName/FirstName. Trim at 35 characters.
  • *2* is the value from AlbertaHighSchoolTranscript/Identification/StudentName/MiddleName. Trim at 35 characters.
  • *3* is the value from AlbertaHighSchoolTranscript/Identification/StudentName/LastName. Trim at 35 characters.

Note: The transcript delivered to the PSI for a student with LNU as their last name should contain a last name of “LNU”.

Gender

If the document order is connected to a transcript request that is stored in the [TranscriptRequest] table and that request has a non-null value for gender then generate the gender segment as follows:

<Gender>
  <GenderCode>*1*</GenderCode>
  <NoteMessage>Alberta Education does not report gender on the high school transcript.</NoteMessage>
  <NoteMessage>This gender is from the originating transcript request.</NoteMessage>
</Gender>

Where *1* is the gender from the originating transcript request. It will be “Unreported” in all other situations.

Otherwise generate the gender segment as follows:

<Gender>
  <GenderCode>Unreported</GenderCode>
  <NoteMessage>Alberta Education does not report gender on the high school transcript.</NoteMessage>
</Gender>

<AcademicRecord> for Alberta Education Coursework

Mapping of what goes into each of the corresponding fields on <AcademicRecord>.

Data ElementSource
School
<School>
  <OrganizationName>Alberta Education</OrganizationName>
  <Contacts>
    <Email>studentrecords@gov.ab.ca</Email>
  </Contacts>
</School>
AcademicAwardThere are three different scenarios that will result in an <AcademicAward> being in the transcript
Scenario #1 - Alberta Education External Credentials

For external credentials that have Alberta Education as the org, use the following format:

<AcademicAward>
  <AcademicAwardDate>*1*</AcademicAwardDate>
  <AcademicAwardTitle>*2*</AcademicAwardTitle>
</AcademicAward>

Where

  • *1* is the value from <ExternalCredential><CredentialAwardDate> from the PASI Transcript XML.
  • *2* is the value from <ExternalCredential><CredentialName> from the PASI Transcript XML.
Scenario #2 - Alberta Education Credentials

For credentials awarded by Alberta Education, use the following format:

<AcademicAward>
  <AcademicAwardLevel>*1*</AcademicAwardLevel>
  <AcademicAwardDate>*2*</AcademicAwardDate>
  <AcademicAwardTitle>*3*</AcademicAwardTitle>
</AcademicAward>

Where

  • *1* is the derived from value from <Credential><CredentialCode> from the PASI Transcript XML. The specification provides the mapping to the appropriate “B” code.
  • *2* is derived as June30th of the school year from <Credential><CredentialYear> from the PASI Transcript XML.
  • *3* is the value from <Credential><CredentialName> from the PASI Transcript XML
Scenario #3 - No Alberta Education Credentials

If there is no Alberta Education awarded credential, use the following format:

<AcademicAward>
  <AcademicAwardLevel>B17</AcademicAwardLevel>
</AcademicAward>
AcademicSessionSee the <AcademicRecord>.<AcademicSession> section later on this page for full detail.
CourseSee the <AcademicRecord>.<Course> section later on this page for full detail.

<AcademicRecord>.<Course>

Only applies to courses in the <AdditionalCredits> segment in the PASI Transcript XML. There will be one of these for every course that appears in the <AdditionalCredits> segment of the PASI Transcript XML.

Mapping of what goes into each of the corresponding fields on <Course>.

Data ElementSource
CourseCreditBasisAlways returned as “HighSchoolTransferCredit”
CourseCreditUnitsAlways use “CarnegieUnits”
CourseCreditEarnedUse the value in <Course>.<CreditsAwared>.
CourseSupplementalAcademicGrade
<CourseSupplementalAcademicGrade>
  <CourseSupplementalGrade>
    <SupplementalGradeCode>InstructorAssignedGrade</SupplementalGradeCode>
    <CourseAcademicSupplementalGrade>*1*</CourseAcademicSupplementalGrade>
  </CourseSupplementalGrade>
</CourseSupplementalAcademicGrade>

If the PASI course has a <ExternalMark> segment then include the CourseSupplementalGrade with a SupplementalGradeCode of “InstructorAssignedGrade” where *1* is the value from <ExternalMark>.<ExternalMarkValue>.

If <ExternalMark> is not present in the PASI transcript xml then the segment should not appear in the PESC xml.

AgencyCourseIDUse the value from <Course>.<CourseCode>
CourseTitle

If the course is <Subject>.<Course> in the PASI transcript xml, then use the value <Course>.<CourseDescription> (Course Full English Name) truncated to the maxlength.

If the course is <Subject>.<OccupationalArea>.<Level>.<Course>, then use a value that is constructed from “{Level}|{Occ Area}|{Title}” based on the following:

  • {Level} will be “ADV”, “IMD”, or “INT” if the level is Advanced, Intermediate, or Introductory, based on the Instruction Level.
  • {Occ Area} will be <Subject>.<OccupationalArea>.<OccupationalAreaName> truncated at a max length of 20 characters, based on Occupational Area.
  • {Title} will be the <Course>.<CourseDescription> truncated so that the constructed <CourseTitle> does not exceed the maxlength of 60 characters defined in the PESC specification, based on Course Full English Name.
UserDefinedExtensionsAdditional structured information. See the next section for full detail.

<AcademicRecord>.<Course>.<UserDefinedExtensions>.<Extensions>

Mapping of what goes into each of the corresponding fields on <Course>.<UserDefinedExtensions>.<Extensions>.

Data ElementSource
CourseTitleUse the value in <Course>.<CourseDescription>, based on Course Full English Name.
CareerAndTechnologyStudies
<CareerAndTechnologyStudies>
  <OccupationalAreaName>*1*</OccupationalAreaName>
  <LevelName>*2*</LevelName>
</CareerAndTechnologyStudies>

Where

  • *1* is the value from <Subject>.<OccupationalArea>.<OccupationalAreaName>, based on Occupational Area
  • *2* is the value from <Subject>.<OccupationalArea>.<Level>.<LevelName>, based on Instruction Level

Note: This entire segment only is included if the <Course> is within an <OccupationalArea>.<Level>.

StudentHasSupportingInformationUse “true” if the PASI course xml has <Course>.<StudentHasSupportingInformation> of true. (This is the new tag being added by section 3.1.1.1).

Omit otherwise.
CourseCreditEarnedExplanation
<CourseCreditEarnedExplanation>
  <CourseCreditEarnedExplanationType>*1*</CourseCreditEarnedExplanationType>
  <CourseCreditEarnedExplanationDescription>*2*</CourseCreditEarnedExplanationDescription>
</CourseCreditEarnedExplanation>

Only include this tag if the <AdditionalCredits>.<Subject>.<Course> segment in the PASI Transcript XML has a <ExternalMark>.

Where

  • *1* is the value from <ExternalMark>.<EvaluationMethod>
  • *2* is the value from <ExternalMark>.<CreditDescription>

<AcademicRecord>.<AcademicSession>

Every course/exam that appears in the <CourseInformation> in the PASI Transcript XML will be grouped into appropriate AcademicSession based on the SessionDesignator that is derived for the course.

The AcademicSessions appear in order within the PESC xml. They should be sorted by AcademicSessionDetail.SessionDesignator and then by AcademicSessionDetail.SessionType.

Mapping of what goes into each of the corresponding fields on <AcademicSession>.

Note: This segment will not be present if the student has not performed any coursework or taken any diploma or GED exams in an Alberta high school.

Data ElementSource
AcademicSessionDetail
<AcademicSessionDetail>
  <SessionDesignator/>
  <SessionType/>
  <SessionSchoolYear/>
  <SessionBeginDate/>
</AcademicSessionDetail>

See section 2.4.3 in the Alberta Education High School Transcript PESC XML specification for full details on this segment and how to use the values contained in the PASI Transcript xml course.

The values are taken from these places in the PASI Transcript xml:

  • Course.SchoolYear and Course.CourseTerm
  • Subject.OccupationalArea.Level.Course.SchoolYear and Subject.OccupationalArea.Level.Course.CourseTerm
Course1 or more of these. One for each course that is in the CourseInformation in the PASI Transcript XML.

See the <AcademicRecord>.<AcademicSession>.<Course> section below for more full detail.

<AcademicRecord>.<AcademicSession>.<Course>

Mapping of what goes into each of the corresponding fields on <Course>.

There will be one of these for every course that appears in the <CourseInformation> segment of the PASI Transcript XML.

Data ElementSource
CourseCreditBasis

The following values can appear:

  • Use “Equivalence” if the PASI course has an <EndNote> of “CourseEquivalency” or ““CourseChallengeEquivalency”.
  • Use “CreditByExam” if the PASI course is for a GED Exam Mark or the transcript includes the Mature Exam Mark footnote.
  • Use “HighSchoolDualCredit” if the PASI course xml has <SchoolMark>.<IsDualEnrolement> of true.
  • Use “Regular” if none of the above situations apply.

Note: In the situation where a course meets the criteria for “Equivalence” and “HighSchoolDualCredit”, only “Equivalence” will appear here.

CourseCreditUnitsAlways use “CarnegieUnits”
CourseCreditEarnedOmit this segment if the PASI course is missing the <OfficialMarkValue> segment.

Otherwise, use the value <Course>.<CreditsAwared>.
CourseAcademicGradeScaleCodeAlways use “89”
CourseAcademicGradeUse the value from <Course>.<OfficialMarkValue> if the PASI course has a value in <OfficialMarkValue>.

Omit this segment if the <OfficialMarkValue> segment has been omitted from the PASI Course.
CourseSupplementalAcademicGrade
<CourseSupplementalAcademicGrade>
  <CourseSupplementalGrade>
    <SupplementalGradeCode>ExamGrade</SupplementalGradeCode>
    <CourseAcademicSupplementalGrade>*1*</CourseAcademicSupplementalGrade>
  </CourseSupplementalGrade>
  <CourseSupplementalGrade>
    <SupplementalGradeCode>InstructorAssignedGrade</SupplementalGradeCode>
    <CourseAcademicSupplementalGrade>*2*</CourseAcademicSupplementalGrade>
  </CourseSupplementalGrade>
</CourseSupplementalAcademicGrade>

If the PASI course has an <Exam> segment then include the CourseSupplementalGrade with a SupplementalGradeCode of “ExamGrade” where *1* is the <Course>.<Exam>.<ExamMarkValue>.

If the PASI course has a <SchoolMark> segment then include the CourseSupplementalGrade with a SupplementalGradeCode of “InstructorAssignedGrade” where *2* is the <Course>.<SchoolMark>.<SchoolMarkValue>.

If neither is present in the PASI transcript xml then the segment should not appear in the PESC xml.

AgencyCourseIDUse the value from <Course>.<CourseCode>
CourseTitle

If the course is <Subject>.<Course> in the PASI transcript xml, then use the value <Course>.<CourseDescription> truncated to the maxlength.

If the course is <Subject>.<OccupationalArea>.<Level>.<Course> the use a value that is constructed from “{Level}|{Occ Area}|{Title}” based on the following:

  • {Level} will be “ADV”, “IMD”, or “INT” if the level is Advanced, Intermediate, or Introductory.
  • {Occ Area} will be <Subject>.<OccupationalArea>.<OccupationalAreaName> truncated at a max length of 20 characters.
  • {Title} will be the <Course>.<CourseDescription> truncated so that the constructed <CourseTitle> does not exceed the maxlength of 60 characters defined in the PESC spec.
CourseOverrideSchool
<CourseOverrideSchool>
  <OrganizationName>*1*</OrganizationName>
  <LocalOrganizationID>
    <LocalOrganizationIDCode>*2*</LocalOrganizationIDCode>
    <LocalOrganizationIDQualifier>AB</LocalOrganizationIDQualifier>
  </LocalOrganizationID>
</CourseOverrideSchool>

Where

  • *1* is the name of the school from the value of <Course>.<SchoolMark>.<SchoolCode>. If *2* ends up being “7999”, then use “Alberta Education”.
  • *2* is the value of <Course>.<SchoolMark>.<SchoolCode>. Use “7999” if there is no <SchoolMark> or <SchoolMark>.<SchoolCode> segment.
LanguageOfInstruction

If the PASI course has an <Exam> segment then include the following where *1* is the <Exam>.<ExamLanguage> converted to a PESC appropriate language code (see existing PESC code for this conversion).

<LanguageOfInstruction>
  <LanguageCode>*1*</LanguageCode>
  <InstructionUsage>Examination</InstructionUsage>
</LanguageOfInstruction>

If the PASI course has a <SchoolMark> segment then also include the following where *2* is the <SchoolMark>.<InstructionalLanguage> converted to a PESC appropriate language code (see section Student.AcademicRecord.AcademicSession.Course.LanguageOfInstruction of Alberta Education High School Transcript PESC XML specification for conversion details).

<LanguageOfInstruction>
  <LanguageCode>*2*</LanguageCode>
  <InstructionUsage>Instruction</InstructionUsage>
</LanguageOfInstruction>

If neither is present in the PASI transcript xml then the segment should not appear in the PESC xml.

UserDefinedExtensionsAdditional structured information. See the next section for full detail.

<AcademicRecord>.<AcademicSession>.<Course>.<UserDefinedExtensions>.<Extensions>

Mapping of what goes into each of the corresponding fields on <UserDefinedExtensions>.<Extensions>.

Data ElementSource
CourseTitleUse the value in <Course>.<CourseDescription>.
CareerAndTechnologyStudies
<CareerAndTechnologyStudies>
  <OccupationalAreaName>*1*</ OccupationalAreaName>
  <LevelName>*2*</LevelName>
</CareerAndTechnologyStudies>

This entire segment only is included if the <Course> is within an <OccupationalArea>.<Level>.

Where

  • *1* is the value from <Subject>.<OccupationalArea>.<OccupationalAreaName>
  • *2* is the value from <Subject>.<OccupationalArea>.<Level>.<LevelName>
DeclaredAsDualCreditEnrolmentUse “true” if the PASI course xml has <SchoolMark>.<IsDualEnrolement> of true.

This segment will be omitted unless the value is true.
EquivalentToCourseIDUse the value from <Course>.<CourseEquivalency>.<EquivalentCourseCode> if the PASI course xml has <Course>.<CourseEquivalency> segment.

Omit otherwise.
EndNote
<EndNote>
  <EndNoteType>*1*</EndNoteType>
  <EndNoteDescription>*2*</EndNoteDescription>
</EndNote>

There will be one of these EndNote segments for every <Course>.<EndNote> other than those for “DualEnrolment” and “MissingSelectedMark”.

Where

  • *1* is the “type” attribute of <Course>.<EndNote>
  • *2* is the value of <Course>.<EndNote>

<AcademicRecord>.<UserDefinedExtensions>.<Extensions>

There could be be one of these when the organization is “Alberta Education” and the student has completed CTS Credentialed Pathways for.

Mapping of what goes into each of the corresponding fields on <AcademicRecord>.<UserDefinedExtensions>.<Extensions>.

Data ElementSource
StudentHasSupportingInformation This will only appear if the organization is not “Alberta Education”. See the next section regarding usage for external credentials.
CareerAndTechnologyStudiesCredentialedPathways
<CareerAndTechnologyStudiesCredentialedPathways>
  <CareerAndTechnologyStudiesCredentialedPathway> <!-- 1 to many of these -->
    <PathwayName>*1*</PathwayName>
    <CompletedSchoolYear>*2*</CompletedSchoolYear>
    <ContributingCourseCodes>*3*</ContributingCourseCodes>
  </CareerAndTechnologyStudiesCredentialedPathway>
</CareerAndTechnologyStudiesCredentialedPathways>

There will be one of these CareerAndTechnologyStudiesCredentialedPathway segments for every <AlbertaHighSchoolTranscript>.<CTSCredentialedPathways>.<CTSCredentialedPathway> that exists in the PASI Transcript XML.

Where:

  • *1* is <AlbertaHighSchoolTranscript>.<CTSCredentialedPathways>.<CTSCredentialedPathway>.<PathwayName>
  • *2* is <AlbertaHighSchoolTranscript>.<CTSCredentialedPathways>.<CTSCredentialedPathway>.<CompletedSchoolYear>
  • *3* is <AlbertaHighSchoolTranscript>.<CTSCredentialedPathways>.<CTSCredentialedPathway>.<ContributingCourseCodes>

<AcademicRecord> for External Credentials

There will be one of these for each organization (other than Alberta Education) that the student has an external credential for. These appear in the <ExternalCredentials> area of the PASI Transcript XML.

There could be more the one <AcademicAward> segment if a single organization has given the student more than one external credential

Mapping of what goes into each of the corresponding fields on <AcademicRecord>.

Data ElementSource
School
<School>
  <OrganizationName>*1*</OrganizationName>
</School>

Where *1* is the value from <ExternalCredential><CredentialAwardingOrganization> from the PASI Transcript XML.

AcademicAward
<AcademicAward>
  <AcademicAwardDate>*1*</AcademicAwardDate>
  <AcademicAwardTitle>*2*</AcademicAwardTitle>
</AcademicAward>

Where

  • *1* is the value from <ExternalCredential><CredentialAwardDate> from the PASI Transcript XML.
  • *2* is the value from <ExternalCredential><CredentialName> from the PASI Transcript XML.
UserDefinedExtensions
<UserDefinedExtensions>
  <Extensions>
    <StudentHasSupportingInformation>true</StudentHasSupportingInformation>
  </Extensions>
</UserDefinedExtensions>

<UserDefinedExtensions>.<Extensions>

Mapping of what goes into each of the corresponding fields on <UserDefinedExtensions>.<Extensions>.

Data ElementSource
AlbertaHighSchoolTranscript_PESC/Revision“2”
AlbertaHighSchoolTranscript_PESC/SpecificationURLhttps://extranet.education.alberta.ca/PASI.devnet/PASI%20Documents/CurrentRelease/Data%20Standards/
TranscriptPDFOptional CDATA attribute that contains the PDF version of the transcript. To be used as the location of the PDF if the original transcript request asked for the PDF of the transcript to be embedded in the PESC xml.

This will be a PDF of the transcript encoded in base64.

Externally Accessible PDFs