diff --git a/api/pom.xml b/api/pom.xml
index ba31ec3d..2175cc9e 100644
--- a/api/pom.xml
+++ b/api/pom.xml
@@ -6,7 +6,7 @@
ca.bc.gov.educ
educ-grad-course-api
- 1.8.40
+ 1.8.41
educ-grad-course-api
Ministry of Education GRAD Course API
diff --git a/api/src/main/resources/db/migration/1.0/V1.0.21__DDL-CREATE_TABLE-fine_arts_applied_skills_code.sql b/api/src/main/resources/db/migration/1.0/V1.0.21__DDL-CREATE_TABLE-fine_arts_applied_skills_code.sql
new file mode 100644
index 00000000..26a357af
--- /dev/null
+++ b/api/src/main/resources/db/migration/1.0/V1.0.21__DDL-CREATE_TABLE-fine_arts_applied_skills_code.sql
@@ -0,0 +1,19 @@
+-- FINE_ARTS_APPLIED_SKILLS_CODE definition
+
+CREATE TABLE "FINE_ARTS_APPLIED_SKILLS_CODE"
+( "FINE_ARTS_APPLIED_SKILLS_CODE" VARCHAR2(1),
+ "LABEL" VARCHAR2(50) NOT NULL ENABLE,
+ "DESCRIPTION" VARCHAR2(355) NOT NULL ENABLE,
+ "DISPLAY_ORDER" NUMBER NOT NULL ENABLE,
+ "EFFECTIVE_DATE" DATE NOT NULL ENABLE,
+ "EXPIRY_DATE" DATE,
+ "CREATE_USER" VARCHAR2(32) DEFAULT USER NOT NULL ENABLE,
+ "CREATE_DATE" DATE DEFAULT SYSTIMESTAMP NOT NULL ENABLE,
+ "UPDATE_USER" VARCHAR2(32) DEFAULT USER NOT NULL ENABLE,
+ "UPDATE_DATE" DATE DEFAULT SYSTIMESTAMP NOT NULL ENABLE,
+ CONSTRAINT "FINE_ARTS_APPLIED_SKILLS_CODE_PK" PRIMARY KEY ("FINE_ARTS_APPLIED_SKILLS_CODE")
+ USING INDEX TABLESPACE "API_GRAD_IDX" ENABLE
+) SEGMENT CREATION IMMEDIATE
+ NOCOMPRESS LOGGING
+ TABLESPACE "API_GRAD_DATA" NO INMEMORY ;
+
\ No newline at end of file
diff --git a/api/src/main/resources/db/migration/1.0/V1.0.22__DML-INSERT_DATA-fine_arts_applied_skills_code.sql b/api/src/main/resources/db/migration/1.0/V1.0.22__DML-INSERT_DATA-fine_arts_applied_skills_code.sql
new file mode 100644
index 00000000..eb382ea5
--- /dev/null
+++ b/api/src/main/resources/db/migration/1.0/V1.0.22__DML-INSERT_DATA-fine_arts_applied_skills_code.sql
@@ -0,0 +1,4 @@
+INSERT INTO FINE_ARTS_APPLIED_SKILLS_CODE (FINE_ARTS_APPLIED_SKILLS_CODE,LABEL,DESCRIPTION,DISPLAY_ORDER,EFFECTIVE_DATE,EXPIRY_DATE) VALUES ('A','Applied Skills','Course meets the Applied Skills Requirement',1,TIMESTAMP'1996-07-01 00:00:00.0',TIMESTAMP'2011-06-30 00:00:00.0');
+INSERT INTO FINE_ARTS_APPLIED_SKILLS_CODE (FINE_ARTS_APPLIED_SKILLS_CODE,LABEL,DESCRIPTION,DISPLAY_ORDER,EFFECTIVE_DATE,EXPIRY_DATE) VALUES ('F','Fine Arts','Course meets the Fine Arts Requirement',2,TIMESTAMP'1996-07-01 00:00:00.0',TIMESTAMP'2011-06-30 00:00:00.0');
+INSERT INTO FINE_ARTS_APPLIED_SKILLS_CODE (FINE_ARTS_APPLIED_SKILLS_CODE,LABEL,DESCRIPTION,DISPLAY_ORDER,EFFECTIVE_DATE,EXPIRY_DATE) VALUES ('B','Both','Course meets both the Applied Skills AND Fine Arts Requirement',3,TIMESTAMP'1996-07-01 00:00:00.0',NULL);
+
diff --git a/api/src/main/resources/db/migration/1.0/V1.0.23__DDL-CREATE_TABLE-equivalent_or_challenge_code.sql b/api/src/main/resources/db/migration/1.0/V1.0.23__DDL-CREATE_TABLE-equivalent_or_challenge_code.sql
new file mode 100644
index 00000000..3977e6b1
--- /dev/null
+++ b/api/src/main/resources/db/migration/1.0/V1.0.23__DDL-CREATE_TABLE-equivalent_or_challenge_code.sql
@@ -0,0 +1,19 @@
+-- EQUIVALENT_OR_CHALLENGE_CODE definition
+
+CREATE TABLE "EQUIVALENT_OR_CHALLENGE_CODE"
+( "EQUIVALENT_OR_CHALLENGE_CODE" VARCHAR2(1),
+ "LABEL" VARCHAR2(50) NOT NULL ENABLE,
+ "DESCRIPTION" VARCHAR2(355) NOT NULL ENABLE,
+ "DISPLAY_ORDER" NUMBER NOT NULL ENABLE,
+ "EFFECTIVE_DATE" DATE NOT NULL ENABLE,
+ "EXPIRY_DATE" DATE,
+ "CREATE_USER" VARCHAR2(32) DEFAULT USER NOT NULL ENABLE,
+ "CREATE_DATE" DATE DEFAULT SYSTIMESTAMP NOT NULL ENABLE,
+ "UPDATE_USER" VARCHAR2(32) DEFAULT USER NOT NULL ENABLE,
+ "UPDATE_DATE" DATE DEFAULT SYSTIMESTAMP NOT NULL ENABLE,
+ CONSTRAINT "EQUIVALENT_OR_CHALLENGE_CODE_PK" PRIMARY KEY ("EQUIVALENT_OR_CHALLENGE_CODE")
+ USING INDEX TABLESPACE "API_GRAD_IDX" ENABLE
+) SEGMENT CREATION IMMEDIATE
+ NOCOMPRESS LOGGING
+ TABLESPACE "API_GRAD_DATA" NO INMEMORY ;
+
\ No newline at end of file
diff --git a/api/src/main/resources/db/migration/1.0/V1.0.24__DML-INSERT_DATA-equivalent_or_challenge_code.sql b/api/src/main/resources/db/migration/1.0/V1.0.24__DML-INSERT_DATA-equivalent_or_challenge_code.sql
new file mode 100644
index 00000000..4a5eb5af
--- /dev/null
+++ b/api/src/main/resources/db/migration/1.0/V1.0.24__DML-INSERT_DATA-equivalent_or_challenge_code.sql
@@ -0,0 +1,3 @@
+INSERT INTO EQUIVALENT_OR_CHALLENGE_CODE (EQUIVALENT_OR_CHALLENGE_CODE,LABEL,DESCRIPTION,DISPLAY_ORDER,EFFECTIVE_DATE,EXPIRY_DATE) VALUES ('E','Equivalency','Course Requirement is met by an equivalency.',1,TIMESTAMP'1984-01-01 00:00:00.0',NULL);
+INSERT INTO EQUIVALENT_OR_CHALLENGE_CODE (EQUIVALENT_OR_CHALLENGE_CODE,LABEL,DESCRIPTION,DISPLAY_ORDER,EFFECTIVE_DATE,EXPIRY_DATE) VALUES ('C','Challenge','Course Requirement is met by a course challenge.',2,TIMESTAMP'1984-01-01 00:00:00.0',NULL);
+
diff --git a/api/src/main/resources/db/migration/1.0/V1.0.25__DDL-CREATE_TABLE-exam_special_case_code.sql b/api/src/main/resources/db/migration/1.0/V1.0.25__DDL-CREATE_TABLE-exam_special_case_code.sql
new file mode 100644
index 00000000..b1fb99dc
--- /dev/null
+++ b/api/src/main/resources/db/migration/1.0/V1.0.25__DDL-CREATE_TABLE-exam_special_case_code.sql
@@ -0,0 +1,19 @@
+-- EXAM_SPECIAL_CASE_CODE definition
+
+CREATE TABLE "EXAM_SPECIAL_CASE_CODE"
+( "EXAM_SPECIAL_CASE_CODE" VARCHAR2(1),
+ "LABEL" VARCHAR2(50) NOT NULL ENABLE,
+ "DESCRIPTION" VARCHAR2(355) NOT NULL ENABLE,
+ "DISPLAY_ORDER" NUMBER NOT NULL ENABLE,
+ "EFFECTIVE_DATE" DATE NOT NULL ENABLE,
+ "EXPIRY_DATE" DATE,
+ "CREATE_USER" VARCHAR2(32) DEFAULT USER NOT NULL ENABLE,
+ "CREATE_DATE" DATE DEFAULT SYSTIMESTAMP NOT NULL ENABLE,
+ "UPDATE_USER" VARCHAR2(32) DEFAULT USER NOT NULL ENABLE,
+ "UPDATE_DATE" DATE DEFAULT SYSTIMESTAMP NOT NULL ENABLE,
+ CONSTRAINT "EXAM_SPECIAL_CASE_CODE_PK" PRIMARY KEY ("EXAM_SPECIAL_CASE_CODE")
+ USING INDEX TABLESPACE "API_GRAD_IDX" ENABLE
+) SEGMENT CREATION IMMEDIATE
+ NOCOMPRESS LOGGING
+ TABLESPACE "API_GRAD_DATA" NO INMEMORY ;
+
\ No newline at end of file
diff --git a/api/src/main/resources/db/migration/1.0/V1.0.26__DML-INSERT_DATA-exam_special_case_code.sql b/api/src/main/resources/db/migration/1.0/V1.0.26__DML-INSERT_DATA-exam_special_case_code.sql
new file mode 100644
index 00000000..f79f1335
--- /dev/null
+++ b/api/src/main/resources/db/migration/1.0/V1.0.26__DML-INSERT_DATA-exam_special_case_code.sql
@@ -0,0 +1,10 @@
+INSERT INTO EXAM_SPECIAL_CASE_CODE (EXAM_SPECIAL_CASE_CODE,LABEL,DESCRIPTION,DISPLAY_ORDER,EFFECTIVE_DATE,EXPIRY_DATE) VALUES ('A','Aegrotat','Aegrotat',1,TIMESTAMP'1984-01-01 00:00:00.0',NULL);
+INSERT INTO EXAM_SPECIAL_CASE_CODE (EXAM_SPECIAL_CASE_CODE,LABEL,DESCRIPTION,DISPLAY_ORDER,EFFECTIVE_DATE,EXPIRY_DATE) VALUES ('B','Special Case B','Special Case B',2,TIMESTAMP'1984-01-01 00:00:00.0',NULL);
+INSERT INTO EXAM_SPECIAL_CASE_CODE (EXAM_SPECIAL_CASE_CODE,LABEL,DESCRIPTION,DISPLAY_ORDER,EFFECTIVE_DATE,EXPIRY_DATE) VALUES ('C','Challenge','Challenge',3,TIMESTAMP'1984-01-01 00:00:00.0',NULL);
+INSERT INTO EXAM_SPECIAL_CASE_CODE (EXAM_SPECIAL_CASE_CODE,LABEL,DESCRIPTION,DISPLAY_ORDER,EFFECTIVE_DATE,EXPIRY_DATE) VALUES ('D','Deferred','Deferred',4,TIMESTAMP'1984-01-01 00:00:00.0',NULL);
+INSERT INTO EXAM_SPECIAL_CASE_CODE (EXAM_SPECIAL_CASE_CODE,LABEL,DESCRIPTION,DISPLAY_ORDER,EFFECTIVE_DATE,EXPIRY_DATE) VALUES ('F','Special Case F','Special Case F',5,TIMESTAMP'1984-01-01 00:00:00.0',NULL);
+INSERT INTO EXAM_SPECIAL_CASE_CODE (EXAM_SPECIAL_CASE_CODE,LABEL,DESCRIPTION,DISPLAY_ORDER,EFFECTIVE_DATE,EXPIRY_DATE) VALUES ('N','None','None',6,TIMESTAMP'1984-01-01 00:00:00.0',NULL);
+INSERT INTO EXAM_SPECIAL_CASE_CODE (EXAM_SPECIAL_CASE_CODE,LABEL,DESCRIPTION,DISPLAY_ORDER,EFFECTIVE_DATE,EXPIRY_DATE) VALUES ('Q','Disqualified','Disqualified',7,TIMESTAMP'1984-01-01 00:00:00.0',NULL);
+INSERT INTO EXAM_SPECIAL_CASE_CODE (EXAM_SPECIAL_CASE_CODE,LABEL,DESCRIPTION,DISPLAY_ORDER,EFFECTIVE_DATE,EXPIRY_DATE) VALUES ('R','Rewrite','Rewrite',8,TIMESTAMP'1984-01-01 00:00:00.0',NULL);
+INSERT INTO EXAM_SPECIAL_CASE_CODE (EXAM_SPECIAL_CASE_CODE,LABEL,DESCRIPTION,DISPLAY_ORDER,EFFECTIVE_DATE,EXPIRY_DATE) VALUES ('V','Verified','Verified',9,TIMESTAMP'1984-01-01 00:00:00.0',NULL);
+INSERT INTO EXAM_SPECIAL_CASE_CODE (EXAM_SPECIAL_CASE_CODE,LABEL,DESCRIPTION,DISPLAY_ORDER,EFFECTIVE_DATE,EXPIRY_DATE) VALUES ('W','Special Case W','Special Case W',10,TIMESTAMP'1984-01-01 00:00:00.0',NULL);
diff --git a/api/src/main/resources/db/migration/1.0/V1.0.27__DDL-CREATE_TABLE-student_course_exam.sql b/api/src/main/resources/db/migration/1.0/V1.0.27__DDL-CREATE_TABLE-student_course_exam.sql
new file mode 100644
index 00000000..215c1cac
--- /dev/null
+++ b/api/src/main/resources/db/migration/1.0/V1.0.27__DDL-CREATE_TABLE-student_course_exam.sql
@@ -0,0 +1,22 @@
+-- STUDENT_COURSE_EXAM definition
+
+CREATE TABLE "STUDENT_COURSE_EXAM"
+( "STUDENT_COURSE_EXAM_ID" RAW(16) DEFAULT SYS_GUID(),
+ "SCHOOL_PERCENT" NUMBER(3),
+ "EXAM_PERCENT" NUMBER(3),
+ "SCHOOL_BEST_PERCENT" NUMBER(3),
+ "EXAM_BEST_PERCENT" NUMBER(3),
+ "EXAM_SPECIAL_CASE_CODE" VARCHAR2(1),
+ "TO_WRITE_FLAG" VARCHAR2(1),
+ "CREATE_USER" VARCHAR2(32) DEFAULT USER NOT NULL ENABLE,
+ "CREATE_DATE" DATE DEFAULT SYSTIMESTAMP NOT NULL ENABLE,
+ "UPDATE_USER" VARCHAR2(32) DEFAULT USER NOT NULL ENABLE,
+ "UPDATE_DATE" DATE DEFAULT SYSTIMESTAMP NOT NULL ENABLE,
+ CONSTRAINT "STUDENT_COURSE_EXAM_PK" PRIMARY KEY ("STUDENT_COURSE_EXAM_ID")
+ USING INDEX TABLESPACE "API_GRAD_IDX" ENABLE,
+ CONSTRAINT "EXAM_SPL_CASECD_FK" FOREIGN KEY ("EXAM_SPECIAL_CASE_CODE")
+ REFERENCES "EXAM_SPECIAL_CASE_CODE" ("EXAM_SPECIAL_CASE_CODE") ENABLE
+) SEGMENT CREATION IMMEDIATE
+ NOCOMPRESS LOGGING
+ TABLESPACE "API_GRAD_DATA" NO INMEMORY ;
+
\ No newline at end of file
diff --git a/api/src/main/resources/db/migration/1.0/V1.0.28__DDL-CREATE_TABLE-student_course.sql b/api/src/main/resources/db/migration/1.0/V1.0.28__DDL-CREATE_TABLE-student_course.sql
new file mode 100644
index 00000000..8cce01b9
--- /dev/null
+++ b/api/src/main/resources/db/migration/1.0/V1.0.28__DDL-CREATE_TABLE-student_course.sql
@@ -0,0 +1,41 @@
+-- STUDENT_COURSE definition
+
+CREATE TABLE "STUDENT_COURSE"
+( "STUDENT_COURSE_ID" RAW(16) DEFAULT SYS_GUID(),
+ "GRADUATION_STUDENT_RECORD_ID" RAW(16) NOT NULL ENABLE,
+ "COURSE_ID" NUMBER(7),
+ "COURSE_CODE" VARCHAR2(7) NOT NULL ENABLE,
+ "COURSE_LEVEL" VARCHAR2(3),
+ "COURSE_SESSION" DATE NOT NULL ENABLE,
+ "INTERIM_PERCENT" NUMBER(3),
+ "INTERIM_LETTER_GRADE" VARCHAR2(2),
+ "FINAL_PERCENT" NUMBER(3),
+ "FINAL_LETTER_GRADE" VARCHAR2(2),
+ "NUMBER_CREDITS" NUMBER(1),
+ "EQUIVALENT_OR_CHALLENGE_CODE" VARCHAR2(1),
+ "FINE_ARTS_APPLIED_SKILLS_CODE" VARCHAR2(1),
+ "RELATED_COURSE_ID" NUMBER(7),
+ "RELATED_COURSE" VARCHAR2(7),
+ "RELATED_LEVEL" VARCHAR2(3),
+ "CUSTOM_COURSE_NAME" VARCHAR2(40),
+ "STUDENT_COURSE_EXAM_ID" RAW(16),
+ "CREATE_USER" VARCHAR2(32) DEFAULT USER NOT NULL ENABLE,
+ "CREATE_DATE" DATE DEFAULT SYSTIMESTAMP NOT NULL ENABLE,
+ "UPDATE_USER" VARCHAR2(32) DEFAULT USER NOT NULL ENABLE,
+ "UPDATE_DATE" DATE DEFAULT SYSTIMESTAMP NOT NULL ENABLE,
+ CONSTRAINT "STUDENT_COURSE_PK" PRIMARY KEY ("STUDENT_COURSE_ID")
+ USING INDEX TABLESPACE "API_GRAD_IDX" ENABLE,
+ CONSTRAINT "STUDENT_COURSE_EXAM_FK" FOREIGN KEY ("STUDENT_COURSE_EXAM_ID")
+ REFERENCES "STUDENT_COURSE_EXAM" ("STUDENT_COURSE_EXAM_ID") ENABLE,
+ CONSTRAINT "EQUIV_OR_CHLNGCD_FK" FOREIGN KEY ("EQUIVALENT_OR_CHALLENGE_CODE")
+ REFERENCES "EQUIVALENT_OR_CHALLENGE_CODE" ("EQUIVALENT_OR_CHALLENGE_CODE") ENABLE,
+ CONSTRAINT "FINE_ARTS_APPL_SKLSCD_FK" FOREIGN KEY ("FINE_ARTS_APPLIED_SKILLS_CODE")
+ REFERENCES "FINE_ARTS_APPLIED_SKILLS_CODE" ("FINE_ARTS_APPLIED_SKILLS_CODE") ENABLE
+) SEGMENT CREATION IMMEDIATE
+ NOCOMPRESS LOGGING
+ TABLESPACE "API_GRAD_DATA" NO INMEMORY ;
+
+
+CREATE INDEX IDX_GRADUATION_STUDENT_RECORD_ID
+ ON STUDENT_COURSE ("GRADUATION_STUDENT_RECORD_ID")
+ TABLESPACE "API_GRAD_IDX"
\ No newline at end of file