@RequestMapping(value = "/transcript/full", method = RequestMethod.GET)
  @PreAuthorize(Permission.SECURITY_PERSON_READ)
  public @ResponseBody ExternalStudentRecordsTO loadFullStudentRecords(final @PathVariable UUID id)
      throws ObjectNotFoundException {
    String schoolId = getStudentId(id);

    final ExternalStudentRecords record = new ExternalStudentRecords();

    record.setPrograms(
        externalStudentAcademicProgramService.getAcademicProgramsBySchoolId(schoolId));
    record.setGPA(externalStudentTranscriptService.getRecordsBySchoolId(schoolId));
    record.setFinancialAid(
        externalStudentFinancialAidService.getStudentFinancialAidBySchoolId(schoolId));
    record.setTerms(externalStudentTranscriptCourseService.getTranscriptsBySchoolId(schoolId));
    record.setFinancialAidAcceptedTerms(
        externalStudentFinancialAidAwardTermService.getStudentFinancialAidAwardsBySchoolId(
            schoolId));
    record.setFinancialAidFiles(
        externalStudentFinancialAidFileService.getStudentFinancialAidFilesBySchoolId(schoolId));
    record.setNonCourseEntities(
        externalStudentTranscriptNonCourseEntityService.getNonCourseTranscriptsBySchoolId(
            schoolId));
    ExternalStudentRecordsTO recordTO =
        new ExternalStudentRecordsTO(record, getBalancedOwed(id, schoolId));

    // update the course faculty names
    updateFactultyNames(recordTO);

    return recordTO;
  }