diff --git a/sources/packages/backend/workflow/src/workflow-definitions/assessment-gateway-v2.bpmn b/sources/packages/backend/workflow/src/workflow-definitions/assessment-gateway-v2.bpmn
index 4b06bdb371..0c19235f4b 100644
--- a/sources/packages/backend/workflow/src/workflow-definitions/assessment-gateway-v2.bpmn
+++ b/sources/packages/backend/workflow/src/workflow-definitions/assessment-gateway-v2.bpmn
@@ -93,21 +93,22 @@ Note: the workflow process should continue its execution as a regular reassessme
save-disbursement-task
save-assessment-data-part-time-task
save-assessment-data-task
- Gateway_1hwknxt
release-assessment-calculation-message
- associate-msfaa-task
+ Event_0mtgfbi
+ workflow-wrap-up-task
+ Event_0w0bgro
update-noa-status-to-not-required-task
update-noa-status-to-not-required-application-completed-task
Gateway_1xse027
Gateway_04wql0w
Gateway_0f9knk0
+ Gateway_1m2js1c
+ associate-msfaa-task
update-application-status-to-assessment-task
update-noa-status-to-required-task
- Gateway_1m2js1c
- Event_0mtgfbi
- workflow-wrap-up-task
- Event_0w0bgro
- Activity_122mg53
+ Gateway_1hwknxt
+ Activity_0d78x0s
+ Activity_1vyml74
@@ -210,11 +211,6 @@ Note: the workflow process should continue its execution as a regular reassessme
Flow_0wed99j
Flow_1izp0bk
-
- Flow_1izp0bk
- Flow_1f8ymzi
- Flow_1mpwyku
-
Flow_1rn6agw
Flow_1uh1kyu
@@ -303,77 +299,6 @@ Note: the workflow process should continue its execution as a regular reassessme
Flow_0358dxp
-
-
-
-
-
-
-
- Flow_1mpwyku
- Flow_1atzf7v
-
-
-
-
-
-
-
-
- Flow_01iq5cw
- Flow_0hmh3m7
-
-
-
-
-
-
-
-
- Flow_1wkpr1a
- Flow_1o87o98
-
-
- Flow_1atzf7v
- Flow_1cb5fpw
- Flow_1wkpr1a
-
-
- Flow_0p1lgm7
- Flow_0hmh3m7
- Flow_0z518wc
-
-
- Flow_0z518wc
- Flow_1o87o98
- Flow_1txrz77
-
-
-
-
-
-
-
-
-
- Flow_1a4wzic
- Flow_0mayggl
-
-
-
-
-
-
-
-
- Flow_0mayggl
- Flow_0p1lgm7
-
-
- Flow_1cb5fpw
- Flow_1a4wzic
- Flow_01iq5cw
-
Flow_10lg2ud
verify-application-exceptions-retry-timer-flow
@@ -766,8 +691,8 @@ Note: the workflow process should continue its execution as a regular reassessme
-
-
+
+
@@ -790,23 +715,9 @@ Note: the workflow process should continue its execution as a regular reassessme
-
-
- =applicationHasNOAApproval = true
-
-
-
- =applicationStatus = "Completed"
-
-
-
-
-
-
+
-
-
@@ -898,21 +809,123 @@ Note: the workflow process should continue its execution as a regular reassessme
- Flow_0toffjh
+ Flow_1txrz77
Flow_0rkzx2d
-
-
+
+
+
+
+
+
+
+ Flow_01iq5cw
+ Flow_0hmh3m7
+
+
+
+
+
+
+
+
+ Flow_1wkpr1a
+ Flow_1o87o98
+
+
+ Flow_1atzf7v
+ Flow_1cb5fpw
+ Flow_1wkpr1a
+
+
+ Flow_0p1lgm7
+ Flow_0hmh3m7
+ Flow_0z518wc
+
+
+ Flow_0z518wc
+ Flow_1o87o98
+ Flow_1txrz77
+
+
+ Flow_1cb5fpw
+ Flow_1a4wzic
+ Flow_01iq5cw
+
+
+
+
+
+
+
+
+ Flow_1mpwyku
+ Flow_1atzf7v
+
+
+
+
+
+
+
+
+
+ Flow_1a4wzic
+ Flow_0mayggl
+
+
+
+
+
+
+
+
+ Flow_0mayggl
+ Flow_0p1lgm7
+
+
+ =applicationHasNOAApproval = true
+
+
+
+ =applicationStatus = "Completed"
+
+
+
+
+
+
+
+
+
+ Flow_13rnc99
+ Flow_17bbn8b
+ Flow_1mpwyku
+
+
-
+
- Flow_1txrz77
- Flow_0toffjh
+ Flow_1f8ymzi
+ Flow_13rnc99
+
+
+
+
+
+
+
+
+
+
+ Flow_1izp0bk
+ Flow_17bbn8b
+
@@ -1012,9 +1025,6 @@ Note: the workflow process should continue its execution as a regular reassessme
-
-
-
@@ -1052,38 +1062,6 @@ Note: the workflow process should continue its execution as a regular reassessme
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -1155,6 +1133,49 @@ Note: the workflow process should continue its execution as a regular reassessme
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1250,10 +1271,6 @@ Note: the workflow process should continue its execution as a regular reassessme
-
-
-
-
@@ -1349,16 +1366,15 @@ Note: the workflow process should continue its execution as a regular reassessme
-
-
+
-
+
-
-
+
+
@@ -1444,55 +1460,9 @@ Note: the workflow process should continue its execution as a regular reassessme
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
@@ -1502,18 +1472,6 @@ Note: the workflow process should continue its execution as a regular reassessme
-
-
-
-
-
-
-
-
-
-
-
-
@@ -1723,9 +1681,72 @@ Note: the workflow process should continue its execution as a regular reassessme
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/sources/packages/backend/workflow/src/workflow-definitions/fulltime-assessment-2025-2026.bpmn b/sources/packages/backend/workflow/src/workflow-definitions/fulltime-assessment-2025-2026.bpmn
index 8f07460ba5..4a0926525c 100644
--- a/sources/packages/backend/workflow/src/workflow-definitions/fulltime-assessment-2025-2026.bpmn
+++ b/sources/packages/backend/workflow/src/workflow-definitions/fulltime-assessment-2025-2026.bpmn
@@ -1,5 +1,5 @@
-
+
@@ -2144,7 +2144,7 @@ If distance education/blended learning program or if married and claiming separa
-
+
Flow_119pdg5
@@ -2153,7 +2153,7 @@ If distance education/blended learning program or if married and claiming separa
-
+
Flow_1qvqrur
@@ -2252,7 +2252,7 @@ Map the correct 1 or 2 values for each of the values used to calculate income, d
-
+
diff --git a/sources/packages/backend/workflow/src/workflow-definitions/fulltime-assessment-2026-2027.bpmn b/sources/packages/backend/workflow/src/workflow-definitions/fulltime-assessment-2026-2027.bpmn
index d4baa37c49..550de35f17 100644
--- a/sources/packages/backend/workflow/src/workflow-definitions/fulltime-assessment-2026-2027.bpmn
+++ b/sources/packages/backend/workflow/src/workflow-definitions/fulltime-assessment-2026-2027.bpmn
@@ -477,7 +477,6 @@ calculatedDataParent1TaxRate
Event_0bk5jrr
Event_1n57xgo
Event_1bl5l5x
- Event_1ikowt9
Activity_05w97d8
Activity_17g355h
Activity_0yaowp1
@@ -488,6 +487,7 @@ calculatedDataParent1TaxRate
Event_0zvfjsx
Event_1dvt26b
Event_0gwvumx
+ Activity_1btmzxj
@@ -1260,10 +1260,10 @@ Federal Unmet Provincial Need = Provincial portion of Fed Need less Adjusted BCS
Student Loan Payments by Partner during the study period can be considered a cost.
-Priority to loan reported by partner directly, then by student. Otherwise will be 0.
+If the student does not have a partner, this value should be 0.
-
+
Flow_1c0irgd
@@ -1724,7 +1724,7 @@ There is also a per application limit based on the number of weeks in the offeri
-
+
Flow_119pdg5
@@ -1733,7 +1733,7 @@ There is also a per application limit based on the number of weeks in the offeri
-
+
Flow_1qvqrur
@@ -1832,7 +1832,7 @@ Map the correct 1 or 2 values for each of the values used to calculate income, d
-
+
@@ -2085,18 +2085,18 @@ Priority to loan reported by partner directly, then by student. Otherwise will b
Alimony/Child Support paid by the Partner during the study period can be considered towards costs. If not entered, consider their costs for this 0.
-
-
-
+
+
+
- Flow_0ssiiff
+ Flow_1iz59pc
Flow_1gzgc13
-
+
Flow_1gzgc13
@@ -2105,7 +2105,7 @@ Alimony/Child Support paid by the Partner during the study period can be conside
-
+
Flow_1w7m8ku
@@ -2114,7 +2114,7 @@ Alimony/Child Support paid by the Partner during the study period can be conside
-
+
Flow_0l4ido8
@@ -2123,27 +2123,13 @@ Alimony/Child Support paid by the Partner during the study period can be conside
-
-
+
+
Flow_0wb0sz0
Flow_0ixsnmb
-
- The priority for Income used in the assessment is:
-1. Current Year
-2. CRA Reported
-3. Self Reported (Own Income)
-4. Self Reported (Student)
-
-
-
-
-
- Flow_1ekiozl
- Flow_0ssiiff
-
@@ -2373,7 +2359,7 @@ Alimony/Child Support paid by the Partner during the study period can be conside
= (studentDataRelationshipStatus = "single" or studentDataRelationshipStatus = "other" or studentDataRelationshipStatus = "marriedUnable") and studentDataDependantstatus = "independant"
-
+
= studentDataRelationshipStatus = "married"
@@ -2412,7 +2398,6 @@ Alimony/Child Support paid by the Partner during the study period can be conside
-
@@ -2444,8 +2429,7 @@ Alimony/Child Support paid by the Partner during the study period can be conside
The priority for Income used in the assessment is:
1. Current Year
2. CRA Reported
-3. Self Reported (Own Income)
-4. Self Reported (Student)
+3. Self Reported
@@ -2480,6 +2464,7 @@ Alimony/Child Support paid by the Partner during the study period can be conside
+
Flow_1u26ach
@@ -2574,6 +2559,61 @@ This also brings in the total PY spouse contribution weeks value if it exists.
+
+ Flow_1ekiozl
+ Flow_1iz59pc
+
+ The priority for Income used in the assessment is:
+1. Current Year
+2. CRA Reported
+3. Self Reported
+
+
+
+
+
+ Flow_172u6ft
+ Flow_10kg3iw
+
+
+ Flow_1sldl88
+ Flow_172u6ft
+ Flow_15nsohu
+
+
+ The priority for Income used in the assessment is:
+1. Current Year
+2. CRA Reported
+3. Self Reported
+
+
+
+
+
+ Flow_15nsohu
+ Flow_17z521s
+
+
+ Flow_10kg3iw
+ Flow_17z521s
+ Flow_1k3l7oj
+
+
+ Flow_1sldl88
+
+
+ Flow_1k3l7oj
+
+
+
+
+
+ =appealsPartnerCurrentYearIncomeAppealData != null
+
+
+
+
+
@@ -2641,24 +2681,24 @@ This also brings in the total PY spouse contribution weeks value if it exists.
+
+
+
+
-
-
+
+
-
-
-
-
-
-
+
+
@@ -3536,6 +3576,10 @@ This also brings in the total PY spouse contribution weeks value if it exists.
+
+
+
+
@@ -3569,16 +3613,14 @@ This also brings in the total PY spouse contribution weeks value if it exists.
-
-
-
-
-
-
+
+
+
+
@@ -3621,12 +3663,8 @@ This also brings in the total PY spouse contribution weeks value if it exists.
-
-
-
-
-
-
+
+
@@ -4514,15 +4552,15 @@ This also brings in the total PY spouse contribution weeks value if it exists.
-
+
-
+
-
+
@@ -4654,10 +4692,6 @@ This also brings in the total PY spouse contribution weeks value if it exists.
-
-
-
-
@@ -4702,85 +4736,9 @@ This also brings in the total PY spouse contribution weeks value if it exists.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
@@ -4990,6 +4948,86 @@ This also brings in the total PY spouse contribution weeks value if it exists.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -5153,72 +5191,143 @@ This also brings in the total PY spouse contribution weeks value if it exists.
+
+
+
+
+
+
-
+
-
+
-
-
+
+
-
+
-
+
-
-
-
-
-
+
+
-
+
-
-
-
-
-
+
+
-
-
-
+
+
+
-
+
-
-
-
+
+
+
-
-
-
+
+
+
-
+
-
-
-
+
+
+
-
-
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/sources/packages/backend/workflow/src/workflow-definitions/load-assessment-consolidated-data.bpmn b/sources/packages/backend/workflow/src/workflow-definitions/load-assessment-consolidated-data.bpmn
index 46cc413330..d56004c79a 100644
--- a/sources/packages/backend/workflow/src/workflow-definitions/load-assessment-consolidated-data.bpmn
+++ b/sources/packages/backend/workflow/src/workflow-definitions/load-assessment-consolidated-data.bpmn
@@ -79,8 +79,8 @@
-
-
+
+
@@ -177,4 +177,4 @@
-
\ No newline at end of file
+
diff --git a/sources/packages/backend/workflow/src/workflow-definitions/parttime-assessment-2026-2027.bpmn b/sources/packages/backend/workflow/src/workflow-definitions/parttime-assessment-2026-2027.bpmn
index 0cddf021fa..3b660e8f2f 100644
--- a/sources/packages/backend/workflow/src/workflow-definitions/parttime-assessment-2026-2027.bpmn
+++ b/sources/packages/backend/workflow/src/workflow-definitions/parttime-assessment-2026-2027.bpmn
@@ -835,6 +835,7 @@ dmnX (comes from dmn)
+
Flow_1tcyqyg
@@ -855,7 +856,7 @@ dmnX (comes from dmn)
-
+
Flow_1sqp89w
Flow_1mrd0pj
@@ -869,10 +870,9 @@ dmnX (comes from dmn)
The priority for Income used in the assessment is:
1. Current Year
2. CRA Reported
-3. Self Reported (Own Income)
-4. Self Reported (Student)
+3. Self Reported
-
+
Flow_0kzutrb
Flow_03zrtci
@@ -883,7 +883,7 @@ dmnX (comes from dmn)
Flow_0bhp3uf
- =studentDataCurrentYearPartnerIncome != null
+ =appealsPartnerCurrentYearIncomeAppealData != null
@@ -1949,10 +1949,6 @@ dmnX (comes from dmn)
-
-
-
-
@@ -2035,6 +2031,10 @@ dmnX (comes from dmn)
+
+
+
+
@@ -2111,10 +2111,10 @@ dmnX (comes from dmn)
-
-
-
-
+
+
+
+
diff --git a/sources/packages/backend/workflow/test/2026-2027/fulltime-assessment/appeals/eligibility/fulltime-assessment-appeal-eligibility-partner-current-year-income.e2e-spec.ts b/sources/packages/backend/workflow/test/2026-2027/fulltime-assessment/appeals/eligibility/fulltime-assessment-appeal-eligibility-partner-current-year-income.e2e-spec.ts
new file mode 100644
index 0000000000..8a0612407c
--- /dev/null
+++ b/sources/packages/backend/workflow/test/2026-2027/fulltime-assessment/appeals/eligibility/fulltime-assessment-appeal-eligibility-partner-current-year-income.e2e-spec.ts
@@ -0,0 +1,127 @@
+import { PROGRAM_YEAR } from "../../../constants/program-year.constants";
+import {
+ ZeebeMockedClient,
+ createFakeConsolidatedFulltimeData,
+ executeFullTimeAssessmentForProgramYear,
+} from "../../../../test-utils";
+import { YesNoOptions } from "@sims/test-utils";
+
+describe(`E2E Test Workflow fulltime-assessment-${PROGRAM_YEAR}-appeal-eligibility-partner-current-year-income.`, () => {
+ it("Should evaluate the partner current year income appeal as eligible when the student is married.", async () => {
+ // Arrange
+ const assessmentConsolidatedData =
+ createFakeConsolidatedFulltimeData(PROGRAM_YEAR);
+ assessmentConsolidatedData.studentDataRelationshipStatus = "married";
+ assessmentConsolidatedData.partner1TotalIncome = 100002;
+ assessmentConsolidatedData.partner1PartnerCaringForDependant =
+ YesNoOptions.No;
+ assessmentConsolidatedData.partner1HasEmploymentInsuranceBenefits =
+ YesNoOptions.No;
+ assessmentConsolidatedData.partner1HasTotalIncomeAssistance =
+ YesNoOptions.No;
+ assessmentConsolidatedData.partner1HasFedralProvincialPDReceipt =
+ YesNoOptions.No;
+
+ // Act
+ const calculatedAssessment = await executeFullTimeAssessmentForProgramYear(
+ PROGRAM_YEAR,
+ assessmentConsolidatedData,
+ );
+
+ // Assert
+ expect(
+ calculatedAssessment.variables
+ .isEligibleForPartnerCurrentYearIncomeAppeal,
+ ).toBe(true);
+ });
+
+ it("Should evaluate the partner current year income appeal as not eligible when the student is single and independant.", async () => {
+ // Arrange
+ const assessmentConsolidatedData =
+ createFakeConsolidatedFulltimeData(PROGRAM_YEAR);
+ assessmentConsolidatedData.studentDataRelationshipStatus = "single";
+ // Act
+ const calculatedAssessment = await executeFullTimeAssessmentForProgramYear(
+ PROGRAM_YEAR,
+ assessmentConsolidatedData,
+ );
+
+ // Assert
+ expect(
+ calculatedAssessment.variables
+ .isEligibleForPartnerCurrentYearIncomeAppeal,
+ ).toBe(false);
+ });
+
+ it("Should evaluate the partner current year income appeal as not eligible when the student relationship status is other and independant.", async () => {
+ // Arrange
+ const assessmentConsolidatedData =
+ createFakeConsolidatedFulltimeData(PROGRAM_YEAR);
+ assessmentConsolidatedData.studentDataRelationshipStatus = "other";
+ // Act
+ const calculatedAssessment = await executeFullTimeAssessmentForProgramYear(
+ PROGRAM_YEAR,
+ assessmentConsolidatedData,
+ );
+
+ // Assert
+ expect(
+ calculatedAssessment.variables
+ .isEligibleForPartnerCurrentYearIncomeAppeal,
+ ).toBe(false);
+ });
+
+ it("Should evaluate the partner current year income appeal as not eligible when the student relationship status is unable to report and independant.", async () => {
+ // Arrange
+ const assessmentConsolidatedData =
+ createFakeConsolidatedFulltimeData(PROGRAM_YEAR);
+ assessmentConsolidatedData.studentDataRelationshipStatus = "marriedUnable";
+ // Act
+ const calculatedAssessment = await executeFullTimeAssessmentForProgramYear(
+ PROGRAM_YEAR,
+ assessmentConsolidatedData,
+ );
+
+ // Assert
+ expect(
+ calculatedAssessment.variables
+ .isEligibleForPartnerCurrentYearIncomeAppeal,
+ ).toBe(false);
+ });
+
+ it("Should evaluate the partner current year income appeal as not eligible when the student is dependant.", async () => {
+ // Arrange
+ const assessmentConsolidatedData =
+ createFakeConsolidatedFulltimeData(PROGRAM_YEAR);
+
+ assessmentConsolidatedData.studentDataDependantstatus = "dependant";
+ assessmentConsolidatedData.parent1TotalIncome = 99999;
+ assessmentConsolidatedData.parent1CppEmployment = 500;
+ assessmentConsolidatedData.parent1CppSelfemploymentOther = 200;
+ assessmentConsolidatedData.parent1Ei = 600;
+ assessmentConsolidatedData.parent1Tax = 700;
+ assessmentConsolidatedData.parent1Contributions = 0;
+ assessmentConsolidatedData.studentDataVoluntaryContributions = 0;
+ assessmentConsolidatedData.studentDataParents = [
+ {
+ parentIsAbleToReport: YesNoOptions.Yes,
+ },
+ ];
+ // Act
+ const calculatedAssessment = await executeFullTimeAssessmentForProgramYear(
+ PROGRAM_YEAR,
+ assessmentConsolidatedData,
+ );
+
+ // Assert
+ expect(
+ calculatedAssessment.variables
+ .isEligibleForPartnerCurrentYearIncomeAppeal,
+ ).toBe(false);
+ });
+
+ afterAll(async () => {
+ // Closes the singleton instance created during test executions.
+ await ZeebeMockedClient.getMockedZeebeInstance().close();
+ });
+});
diff --git a/sources/packages/backend/workflow/test/2026-2027/fulltime-assessment/appeals/fulltime-assessment-partner-current-year-income.e2e-spec.ts b/sources/packages/backend/workflow/test/2026-2027/fulltime-assessment/appeals/fulltime-assessment-partner-current-year-income.e2e-spec.ts
new file mode 100644
index 0000000000..f910334b15
--- /dev/null
+++ b/sources/packages/backend/workflow/test/2026-2027/fulltime-assessment/appeals/fulltime-assessment-partner-current-year-income.e2e-spec.ts
@@ -0,0 +1,78 @@
+import { PROGRAM_YEAR } from "../../constants/program-year.constants";
+import {
+ ZeebeMockedClient,
+ createFakeConsolidatedFulltimeData,
+ executeFullTimeAssessmentForProgramYear,
+} from "../../../test-utils";
+
+describe(`E2E Test Workflow fulltime-assessment-${PROGRAM_YEAR}-partner-current-year-income.`, () => {
+ it("Should use application values when there is no partner current year income appeal and no CRA reported income.", async () => {
+ // Arrange
+ const assessmentConsolidatedData =
+ createFakeConsolidatedFulltimeData(PROGRAM_YEAR);
+ assessmentConsolidatedData.studentDataRelationshipStatus = "married";
+ assessmentConsolidatedData.appealsPartnerCurrentYearIncomeAppealData = null;
+ assessmentConsolidatedData.partner1TotalIncome = 1234;
+ assessmentConsolidatedData.partner1CRAReportedIncome = null;
+
+ // Act
+ const calculatedAssessment = await executeFullTimeAssessmentForProgramYear(
+ PROGRAM_YEAR,
+ assessmentConsolidatedData,
+ );
+
+ // Assert
+ expect(
+ calculatedAssessment.variables.calculatedDataPartner1TotalIncome,
+ ).toBe(1234);
+ });
+
+ it("Should use the appeal current year income values when there is a partner current year income appeal and the partner has no CRA reported income.", async () => {
+ // Arrange
+ const assessmentConsolidatedData =
+ createFakeConsolidatedFulltimeData(PROGRAM_YEAR);
+ assessmentConsolidatedData.studentDataRelationshipStatus = "married";
+ assessmentConsolidatedData.appealsPartnerCurrentYearIncomeAppealData = {
+ currentYearIncome: 20001,
+ };
+ assessmentConsolidatedData.partner1TotalIncome = 100002;
+ assessmentConsolidatedData.partner1CRAReportedIncome = null;
+
+ // Act
+ const calculatedAssessment = await executeFullTimeAssessmentForProgramYear(
+ PROGRAM_YEAR,
+ assessmentConsolidatedData,
+ );
+
+ // Assert
+ expect(
+ calculatedAssessment.variables.calculatedDataPartner1TotalIncome,
+ ).toBe(20001);
+ });
+
+ it("Should use the appeal current year income values when there is a partner current year income appeal and the partner has CRA reported income.", async () => {
+ // Arrange
+ const assessmentConsolidatedData =
+ createFakeConsolidatedFulltimeData(PROGRAM_YEAR);
+ assessmentConsolidatedData.studentDataRelationshipStatus = "married";
+ assessmentConsolidatedData.appealsPartnerCurrentYearIncomeAppealData = {
+ currentYearIncome: 20001,
+ };
+ assessmentConsolidatedData.partner1CRAReportedIncome = 1000001;
+ assessmentConsolidatedData.partner1TotalIncome = 100002;
+ // Act
+ const calculatedAssessment = await executeFullTimeAssessmentForProgramYear(
+ PROGRAM_YEAR,
+ assessmentConsolidatedData,
+ );
+ // Assert
+ expect(
+ calculatedAssessment.variables.calculatedDataPartner1TotalIncome,
+ ).toBe(20001);
+ });
+
+ afterAll(async () => {
+ // Closes the singleton instance created during test executions.
+ await ZeebeMockedClient.getMockedZeebeInstance().close();
+ });
+});
diff --git a/sources/packages/backend/workflow/test/2026-2027/fulltime-assessment/contribution/fulltime-assessment-spouse-contribution.e2e-spec.ts b/sources/packages/backend/workflow/test/2026-2027/fulltime-assessment/contribution/fulltime-assessment-spouse-contribution.e2e-spec.ts
index e54b0ede2e..bf5560853c 100644
--- a/sources/packages/backend/workflow/test/2026-2027/fulltime-assessment/contribution/fulltime-assessment-spouse-contribution.e2e-spec.ts
+++ b/sources/packages/backend/workflow/test/2026-2027/fulltime-assessment/contribution/fulltime-assessment-spouse-contribution.e2e-spec.ts
@@ -13,13 +13,13 @@ describe(`E2E Test Workflow fulltime-assessment-${PROGRAM_YEAR}-spouse-contribut
createFakeConsolidatedFulltimeData(PROGRAM_YEAR);
assessmentConsolidatedData.studentDataHasDependents = YesNoOptions.No;
assessmentConsolidatedData.studentDataRelationshipStatus = "married";
- assessmentConsolidatedData.studentDataPartnerHasEmploymentInsuranceBenefits =
+ assessmentConsolidatedData.partner1HasEmploymentInsuranceBenefits =
YesNoOptions.No;
- assessmentConsolidatedData.studentDataPartnerHasTotalIncomeAssistance =
+ assessmentConsolidatedData.partner1HasTotalIncomeAssistance =
YesNoOptions.No;
- assessmentConsolidatedData.studentDataPartnerHasFedralProvincialPDReceipt =
+ assessmentConsolidatedData.partner1HasFedralProvincialPDReceipt =
YesNoOptions.No;
- assessmentConsolidatedData.studentDataEstimatedSpouseIncome = 30000;
+ assessmentConsolidatedData.partner1TotalIncome = 30000;
// Act
const calculatedAssessment = await executeFullTimeAssessmentForProgramYear(
@@ -75,13 +75,13 @@ describe(`E2E Test Workflow fulltime-assessment-${PROGRAM_YEAR}-spouse-contribut
createFakeConsolidatedFulltimeData(PROGRAM_YEAR);
assessmentConsolidatedData.studentDataHasDependents = YesNoOptions.No;
assessmentConsolidatedData.studentDataRelationshipStatus = "married";
- assessmentConsolidatedData.studentDataPartnerHasEmploymentInsuranceBenefits =
+ assessmentConsolidatedData.partner1HasEmploymentInsuranceBenefits =
YesNoOptions.No;
- assessmentConsolidatedData.studentDataPartnerHasTotalIncomeAssistance =
+ assessmentConsolidatedData.partner1HasTotalIncomeAssistance =
YesNoOptions.No;
- assessmentConsolidatedData.studentDataPartnerHasFedralProvincialPDReceipt =
+ assessmentConsolidatedData.partner1HasFedralProvincialPDReceipt =
YesNoOptions.No;
- assessmentConsolidatedData.studentDataEstimatedSpouseIncome = 30000;
+ assessmentConsolidatedData.partner1TotalIncome = 30000;
assessmentConsolidatedData.studentDataYouthInCare = YesNoOptions.Yes;
// Act
@@ -133,15 +133,15 @@ describe(`E2E Test Workflow fulltime-assessment-${PROGRAM_YEAR}-spouse-contribut
createFakeConsolidatedFulltimeData(PROGRAM_YEAR);
assessmentConsolidatedData.studentDataHasDependents = YesNoOptions.No;
assessmentConsolidatedData.studentDataRelationshipStatus = "married";
- assessmentConsolidatedData.studentDataPartnerHasEmploymentInsuranceBenefits =
+ assessmentConsolidatedData.partner1HasEmploymentInsuranceBenefits =
YesNoOptions.No;
- assessmentConsolidatedData.studentDataPartnerHasTotalIncomeAssistance =
+ assessmentConsolidatedData.partner1HasTotalIncomeAssistance =
YesNoOptions.No;
- assessmentConsolidatedData.studentDataPartnerHasFedralProvincialPDReceipt =
+ assessmentConsolidatedData.partner1HasFedralProvincialPDReceipt =
YesNoOptions.No;
- assessmentConsolidatedData.studentDataEstimatedSpouseIncome = 30000;
+ assessmentConsolidatedData.partner1TotalIncome = 30000;
assessmentConsolidatedData.studentDataYouthInCare = YesNoOptions.Yes;
- assessmentConsolidatedData.studentDataPartnerStudyWeeks = 12;
+ assessmentConsolidatedData.partner1StudentStudyWeeks = 12;
// Act
const calculatedAssessment =
@@ -197,13 +197,13 @@ describe(`E2E Test Workflow fulltime-assessment-${PROGRAM_YEAR}-spouse-contribut
createFakeConsolidatedFulltimeData(PROGRAM_YEAR);
assessmentConsolidatedData.studentDataHasDependents = YesNoOptions.No;
assessmentConsolidatedData.studentDataRelationshipStatus = "married";
- assessmentConsolidatedData.studentDataPartnerHasEmploymentInsuranceBenefits =
+ assessmentConsolidatedData.partner1HasEmploymentInsuranceBenefits =
YesNoOptions.No;
- assessmentConsolidatedData.studentDataPartnerHasTotalIncomeAssistance =
+ assessmentConsolidatedData.partner1HasTotalIncomeAssistance =
YesNoOptions.No;
- assessmentConsolidatedData.studentDataPartnerHasFedralProvincialPDReceipt =
+ assessmentConsolidatedData.partner1HasFedralProvincialPDReceipt =
YesNoOptions.No;
- assessmentConsolidatedData.studentDataEstimatedSpouseIncome = 30000;
+ assessmentConsolidatedData.partner1TotalIncome = 30000;
assessmentConsolidatedData.studentDataYouthInCare = YesNoOptions.Yes;
assessmentConsolidatedData.programYearTotalFullTimeSpouseContributionWeeks = 20; // Spouse contribution for 20 weeks have been calculated in the program year.
@@ -263,13 +263,13 @@ describe(`E2E Test Workflow fulltime-assessment-${PROGRAM_YEAR}-spouse-contribut
createFakeConsolidatedFulltimeData(PROGRAM_YEAR);
assessmentConsolidatedData.studentDataHasDependents = YesNoOptions.No;
assessmentConsolidatedData.studentDataRelationshipStatus = "married";
- assessmentConsolidatedData.studentDataPartnerHasEmploymentInsuranceBenefits =
+ assessmentConsolidatedData.partner1HasEmploymentInsuranceBenefits =
YesNoOptions.Yes;
- assessmentConsolidatedData.studentDataPartnerHasTotalIncomeAssistance =
+ assessmentConsolidatedData.partner1HasTotalIncomeAssistance =
YesNoOptions.No;
- assessmentConsolidatedData.studentDataPartnerHasFedralProvincialPDReceipt =
+ assessmentConsolidatedData.partner1HasFedralProvincialPDReceipt =
YesNoOptions.No;
- assessmentConsolidatedData.studentDataEstimatedSpouseIncome = 30000;
+ assessmentConsolidatedData.partner1TotalIncome = 30000;
assessmentConsolidatedData.studentDataYouthInCare = YesNoOptions.Yes;
// Act
@@ -325,13 +325,13 @@ describe(`E2E Test Workflow fulltime-assessment-${PROGRAM_YEAR}-spouse-contribut
createFakeConsolidatedFulltimeData(PROGRAM_YEAR);
assessmentConsolidatedData.studentDataHasDependents = YesNoOptions.No;
assessmentConsolidatedData.studentDataRelationshipStatus = "married";
- assessmentConsolidatedData.studentDataPartnerHasEmploymentInsuranceBenefits =
+ assessmentConsolidatedData.partner1HasEmploymentInsuranceBenefits =
YesNoOptions.No;
- assessmentConsolidatedData.studentDataPartnerHasTotalIncomeAssistance =
+ assessmentConsolidatedData.partner1HasTotalIncomeAssistance =
YesNoOptions.No;
- assessmentConsolidatedData.studentDataPartnerHasFedralProvincialPDReceipt =
+ assessmentConsolidatedData.partner1HasFedralProvincialPDReceipt =
YesNoOptions.No;
- assessmentConsolidatedData.studentDataEstimatedSpouseIncome = 10000;
+ assessmentConsolidatedData.partner1TotalIncome = 10000;
assessmentConsolidatedData.studentDataYouthInCare = YesNoOptions.Yes;
// Act
@@ -387,13 +387,13 @@ describe(`E2E Test Workflow fulltime-assessment-${PROGRAM_YEAR}-spouse-contribut
createFakeConsolidatedFulltimeData(PROGRAM_YEAR);
assessmentConsolidatedData.studentDataHasDependents = YesNoOptions.No;
assessmentConsolidatedData.studentDataRelationshipStatus = "married";
- assessmentConsolidatedData.studentDataPartnerHasEmploymentInsuranceBenefits =
+ assessmentConsolidatedData.partner1HasEmploymentInsuranceBenefits =
YesNoOptions.No;
- assessmentConsolidatedData.studentDataPartnerHasTotalIncomeAssistance =
+ assessmentConsolidatedData.partner1HasTotalIncomeAssistance =
YesNoOptions.No;
- assessmentConsolidatedData.studentDataPartnerHasFedralProvincialPDReceipt =
+ assessmentConsolidatedData.partner1HasFedralProvincialPDReceipt =
YesNoOptions.Yes;
- assessmentConsolidatedData.studentDataEstimatedSpouseIncome = 30000;
+ assessmentConsolidatedData.partner1TotalIncome = 30000;
assessmentConsolidatedData.studentDataYouthInCare = YesNoOptions.Yes;
// Act
@@ -449,13 +449,13 @@ describe(`E2E Test Workflow fulltime-assessment-${PROGRAM_YEAR}-spouse-contribut
createFakeConsolidatedFulltimeData(PROGRAM_YEAR);
assessmentConsolidatedData.studentDataHasDependents = YesNoOptions.No;
assessmentConsolidatedData.studentDataRelationshipStatus = "married";
- assessmentConsolidatedData.studentDataPartnerHasEmploymentInsuranceBenefits =
+ assessmentConsolidatedData.partner1HasEmploymentInsuranceBenefits =
YesNoOptions.No;
- assessmentConsolidatedData.studentDataPartnerHasTotalIncomeAssistance =
+ assessmentConsolidatedData.partner1HasTotalIncomeAssistance =
YesNoOptions.Yes;
- assessmentConsolidatedData.studentDataPartnerHasFedralProvincialPDReceipt =
+ assessmentConsolidatedData.partner1HasFedralProvincialPDReceipt =
YesNoOptions.No;
- assessmentConsolidatedData.studentDataEstimatedSpouseIncome = 30000;
+ assessmentConsolidatedData.partner1TotalIncome = 30000;
assessmentConsolidatedData.studentDataYouthInCare = YesNoOptions.Yes;
@@ -512,16 +512,16 @@ describe(`E2E Test Workflow fulltime-assessment-${PROGRAM_YEAR}-spouse-contribut
createFakeConsolidatedFulltimeData(PROGRAM_YEAR);
assessmentConsolidatedData.studentDataHasDependents = YesNoOptions.No;
assessmentConsolidatedData.studentDataRelationshipStatus = "married";
- assessmentConsolidatedData.studentDataPartnerHasEmploymentInsuranceBenefits =
+ assessmentConsolidatedData.partner1HasEmploymentInsuranceBenefits =
YesNoOptions.No;
- assessmentConsolidatedData.studentDataPartnerHasTotalIncomeAssistance =
+ assessmentConsolidatedData.partner1HasTotalIncomeAssistance =
YesNoOptions.No;
- assessmentConsolidatedData.studentDataPartnerHasFedralProvincialPDReceipt =
+ assessmentConsolidatedData.partner1HasFedralProvincialPDReceipt =
YesNoOptions.No;
- assessmentConsolidatedData.studentDataEstimatedSpouseIncome = 30000;
+ assessmentConsolidatedData.partner1TotalIncome = 30000;
assessmentConsolidatedData.studentDataYouthInCare = YesNoOptions.Yes;
// The spouse is a full-time student for more weeks than the student's offering weeks (16).
- assessmentConsolidatedData.studentDataPartnerStudyWeeks = 20;
+ assessmentConsolidatedData.partner1StudentStudyWeeks = 20;
// Act
const calculatedAssessment = await executeFullTimeAssessmentForProgramYear(
diff --git a/sources/packages/backend/workflow/test/2026-2027/fulltime-assessment/costs/fulltime-assessment-costs-alimony-support.e2e-spec.ts b/sources/packages/backend/workflow/test/2026-2027/fulltime-assessment/costs/fulltime-assessment-costs-alimony-support.e2e-spec.ts
index 2ad1ced3c4..d96aea8809 100644
--- a/sources/packages/backend/workflow/test/2026-2027/fulltime-assessment/costs/fulltime-assessment-costs-alimony-support.e2e-spec.ts
+++ b/sources/packages/backend/workflow/test/2026-2027/fulltime-assessment/costs/fulltime-assessment-costs-alimony-support.e2e-spec.ts
@@ -99,16 +99,15 @@ describe(`E2E Test Workflow full-time-assessment-${PROGRAM_YEAR}-costs-alimony-s
const assessmentConsolidatedData =
createFakeConsolidatedFulltimeData(PROGRAM_YEAR);
assessmentConsolidatedData.studentDataChildSupportAndOrSpousalSupport = 3500;
- assessmentConsolidatedData.studentDataPartnerChildSupportCosts = null;
- assessmentConsolidatedData.studentDataIsYourPartnerAbleToReport = false;
+ assessmentConsolidatedData.partner1ChildSpousalSupportCost = null;
assessmentConsolidatedData.studentDataRelationshipStatus = "married";
- assessmentConsolidatedData.studentDataPartnerHasEmploymentInsuranceBenefits =
+ assessmentConsolidatedData.partner1HasEmploymentInsuranceBenefits =
YesNoOptions.No;
- assessmentConsolidatedData.studentDataPartnerHasTotalIncomeAssistance =
+ assessmentConsolidatedData.partner1HasTotalIncomeAssistance =
YesNoOptions.No;
- assessmentConsolidatedData.studentDataPartnerHasFedralProvincialPDReceipt =
+ assessmentConsolidatedData.partner1HasFedralProvincialPDReceipt =
YesNoOptions.No;
- assessmentConsolidatedData.studentDataEstimatedSpouseIncome = 0;
+ assessmentConsolidatedData.partner1TotalIncome = 0;
// Act
const calculatedAssessment =
await executeFullTimeAssessmentForProgramYear(
@@ -135,16 +134,15 @@ describe(`E2E Test Workflow full-time-assessment-${PROGRAM_YEAR}-costs-alimony-s
const assessmentConsolidatedData =
createFakeConsolidatedFulltimeData(PROGRAM_YEAR);
assessmentConsolidatedData.studentDataChildSupportAndOrSpousalSupport = 2000;
- assessmentConsolidatedData.studentDataPartnerChildSupportCosts = 1000;
- assessmentConsolidatedData.studentDataIsYourPartnerAbleToReport = false;
+ assessmentConsolidatedData.partner1ChildSpousalSupportCost = 1000;
assessmentConsolidatedData.studentDataRelationshipStatus = "married";
- assessmentConsolidatedData.studentDataPartnerHasEmploymentInsuranceBenefits =
+ assessmentConsolidatedData.partner1HasEmploymentInsuranceBenefits =
YesNoOptions.No;
- assessmentConsolidatedData.studentDataPartnerHasTotalIncomeAssistance =
+ assessmentConsolidatedData.partner1HasTotalIncomeAssistance =
YesNoOptions.No;
- assessmentConsolidatedData.studentDataPartnerHasFedralProvincialPDReceipt =
+ assessmentConsolidatedData.partner1HasFedralProvincialPDReceipt =
YesNoOptions.No;
- assessmentConsolidatedData.studentDataEstimatedSpouseIncome = 0;
+ assessmentConsolidatedData.partner1TotalIncome = 0;
// Act
const calculatedAssessment =
await executeFullTimeAssessmentForProgramYear(
@@ -172,17 +170,16 @@ describe(`E2E Test Workflow full-time-assessment-${PROGRAM_YEAR}-costs-alimony-s
const assessmentConsolidatedData =
createFakeConsolidatedFulltimeData(PROGRAM_YEAR);
assessmentConsolidatedData.studentDataChildSupportAndOrSpousalSupport = 2000;
- assessmentConsolidatedData.studentDataPartnerStudyWeeks = 13;
- assessmentConsolidatedData.studentDataPartnerChildSupportCosts = 1000;
- assessmentConsolidatedData.studentDataIsYourPartnerAbleToReport = false;
+ assessmentConsolidatedData.partner1StudentStudyWeeks = 13;
+ assessmentConsolidatedData.partner1ChildSpousalSupportCost = 1000;
assessmentConsolidatedData.studentDataRelationshipStatus = "married";
- assessmentConsolidatedData.studentDataPartnerHasEmploymentInsuranceBenefits =
+ assessmentConsolidatedData.partner1HasEmploymentInsuranceBenefits =
YesNoOptions.No;
- assessmentConsolidatedData.studentDataPartnerHasTotalIncomeAssistance =
+ assessmentConsolidatedData.partner1HasTotalIncomeAssistance =
YesNoOptions.No;
- assessmentConsolidatedData.studentDataPartnerHasFedralProvincialPDReceipt =
+ assessmentConsolidatedData.partner1HasFedralProvincialPDReceipt =
YesNoOptions.No;
- assessmentConsolidatedData.studentDataEstimatedSpouseIncome = 0;
+ assessmentConsolidatedData.partner1TotalIncome = 0;
// Act
const calculatedAssessment =
await executeFullTimeAssessmentForProgramYear(
@@ -211,15 +208,14 @@ describe(`E2E Test Workflow full-time-assessment-${PROGRAM_YEAR}-costs-alimony-s
createFakeConsolidatedFulltimeData(PROGRAM_YEAR);
assessmentConsolidatedData.studentDataChildSupportAndOrSpousalSupport = 3000;
assessmentConsolidatedData.studentDataRelationshipStatus = "married";
- assessmentConsolidatedData.studentDataPartnerChildSupportCosts = 2000;
- assessmentConsolidatedData.studentDataIsYourPartnerAbleToReport = false;
- assessmentConsolidatedData.studentDataPartnerHasEmploymentInsuranceBenefits =
+ assessmentConsolidatedData.partner1ChildSpousalSupportCost = 2000;
+ assessmentConsolidatedData.partner1HasEmploymentInsuranceBenefits =
YesNoOptions.No;
- assessmentConsolidatedData.studentDataPartnerHasTotalIncomeAssistance =
+ assessmentConsolidatedData.partner1HasTotalIncomeAssistance =
YesNoOptions.No;
- assessmentConsolidatedData.studentDataPartnerHasFedralProvincialPDReceipt =
+ assessmentConsolidatedData.partner1HasFedralProvincialPDReceipt =
YesNoOptions.No;
- assessmentConsolidatedData.studentDataEstimatedSpouseIncome = 0;
+ assessmentConsolidatedData.partner1TotalIncome = 0;
// Act
const calculatedAssessment =
await executeFullTimeAssessmentForProgramYear(
diff --git a/sources/packages/backend/workflow/test/2026-2027/fulltime-assessment/costs/fulltime-assessment-costs-child-care-cost.e2e-spec.ts b/sources/packages/backend/workflow/test/2026-2027/fulltime-assessment/costs/fulltime-assessment-costs-child-care-cost.e2e-spec.ts
index d2f633eda3..c266ce4dac 100644
--- a/sources/packages/backend/workflow/test/2026-2027/fulltime-assessment/costs/fulltime-assessment-costs-child-care-cost.e2e-spec.ts
+++ b/sources/packages/backend/workflow/test/2026-2027/fulltime-assessment/costs/fulltime-assessment-costs-child-care-cost.e2e-spec.ts
@@ -65,9 +65,8 @@ describe(`E2E Test Workflow full-time-assessment-${PROGRAM_YEAR}-costs-child-car
assessmentConsolidatedData.studentDataDaycareCosts11YearsOrUnder = 1000;
assessmentConsolidatedData.offeringWeeks = 18;
assessmentConsolidatedData.studentDataRelationshipStatus = "married";
- assessmentConsolidatedData.studentDataPartnerStudyWeeks = 3;
- assessmentConsolidatedData.studentDataIsYourPartnerAbleToReport = false;
- assessmentConsolidatedData.studentDataEstimatedSpouseIncome = 10000;
+ assessmentConsolidatedData.partner1StudentStudyWeeks = 3;
+ assessmentConsolidatedData.partner1TotalIncome = 10000;
assessmentConsolidatedData.studentDataTaxReturnIncome = 10002;
// Creates 1 eligible dependent.
assessmentConsolidatedData.studentDataHasDependents = YesNoOptions.Yes;
@@ -111,9 +110,8 @@ describe(`E2E Test Workflow full-time-assessment-${PROGRAM_YEAR}-costs-child-car
assessmentConsolidatedData.studentDataDaycareCosts11YearsOrUnder = 1000;
assessmentConsolidatedData.offeringWeeks = 18;
assessmentConsolidatedData.studentDataRelationshipStatus = "married";
- assessmentConsolidatedData.studentDataPartnerStudyWeeks = 13;
- assessmentConsolidatedData.studentDataIsYourPartnerAbleToReport = false;
- assessmentConsolidatedData.studentDataEstimatedSpouseIncome = 10000;
+ assessmentConsolidatedData.partner1StudentStudyWeeks = 13;
+ assessmentConsolidatedData.partner1TotalIncome = 10000;
assessmentConsolidatedData.studentDataTaxReturnIncome = 10002;
// Creates 1 eligible dependent.
assessmentConsolidatedData.studentDataHasDependents = YesNoOptions.Yes;
@@ -254,10 +252,9 @@ describe(`E2E Test Workflow full-time-assessment-${PROGRAM_YEAR}-costs-child-car
assessmentConsolidatedData.studentDataDaycareCosts11YearsOrUnder = 1000;
assessmentConsolidatedData.offeringWeeks = 18;
assessmentConsolidatedData.studentDataRelationshipStatus = "married";
- assessmentConsolidatedData.studentDataPartnerCaringForDependant =
+ assessmentConsolidatedData.partner1PartnerCaringForDependant =
YesNoOptions.Yes;
- assessmentConsolidatedData.studentDataIsYourPartnerAbleToReport = false;
- assessmentConsolidatedData.studentDataEstimatedSpouseIncome = 10000;
+ assessmentConsolidatedData.partner1TotalIncome = 10000;
assessmentConsolidatedData.studentDataTaxReturnIncome = 10002;
// Creates 1 eligible dependent.
assessmentConsolidatedData.studentDataHasDependents = YesNoOptions.Yes;
@@ -299,10 +296,9 @@ describe(`E2E Test Workflow full-time-assessment-${PROGRAM_YEAR}-costs-child-car
assessmentConsolidatedData.studentDataDaycareCosts11YearsOrUnder = 1000;
assessmentConsolidatedData.offeringWeeks = 18;
assessmentConsolidatedData.studentDataRelationshipStatus = "married";
- assessmentConsolidatedData.studentDataPartnerCaringForDependant =
+ assessmentConsolidatedData.partner1PartnerCaringForDependant =
YesNoOptions.No;
- assessmentConsolidatedData.studentDataIsYourPartnerAbleToReport = false;
- assessmentConsolidatedData.studentDataEstimatedSpouseIncome = 10000;
+ assessmentConsolidatedData.partner1TotalIncome = 10000;
assessmentConsolidatedData.studentDataTaxReturnIncome = 10002;
// Creates 1 eligible dependent.
assessmentConsolidatedData.studentDataHasDependents = YesNoOptions.Yes;
diff --git a/sources/packages/backend/workflow/test/2026-2027/fulltime-assessment/costs/fulltime-assessment-costs-interface-policy.e2e-spec.ts b/sources/packages/backend/workflow/test/2026-2027/fulltime-assessment/costs/fulltime-assessment-costs-interface-policy.e2e-spec.ts
index 7cb99fdb5a..ce80cedb9d 100644
--- a/sources/packages/backend/workflow/test/2026-2027/fulltime-assessment/costs/fulltime-assessment-costs-interface-policy.e2e-spec.ts
+++ b/sources/packages/backend/workflow/test/2026-2027/fulltime-assessment/costs/fulltime-assessment-costs-interface-policy.e2e-spec.ts
@@ -33,15 +33,14 @@ describe(`E2E Test Workflow full-time-assessment-${PROGRAM_YEAR}-costs-interface
createFakeConsolidatedFulltimeData(PROGRAM_YEAR);
assessmentConsolidatedData.studentDataIncomeAssistanceAmount = 1000;
assessmentConsolidatedData.studentDataRelationshipStatus = "married";
- assessmentConsolidatedData.studentDataIsYourPartnerAbleToReport = false;
- assessmentConsolidatedData.studentDataPartnerHasEmploymentInsuranceBenefits =
+ assessmentConsolidatedData.partner1HasEmploymentInsuranceBenefits =
YesNoOptions.No;
- assessmentConsolidatedData.studentDataPartnerHasTotalIncomeAssistance =
+ assessmentConsolidatedData.partner1HasTotalIncomeAssistance =
YesNoOptions.No;
- assessmentConsolidatedData.studentDataPartnerHasFedralProvincialPDReceipt =
+ assessmentConsolidatedData.partner1HasFedralProvincialPDReceipt =
YesNoOptions.No;
- assessmentConsolidatedData.studentDataEstimatedSpouseIncome = 0;
- assessmentConsolidatedData.studentDataPartnerBCEAIncomeAssistanceAmount = 1500;
+ assessmentConsolidatedData.partner1TotalIncome = 0;
+ assessmentConsolidatedData.partner1BCEAIncomeAssistanceAmount = 1500;
// Act
const calculatedAssessment = await executeFullTimeAssessmentForProgramYear(
@@ -102,15 +101,14 @@ describe(`E2E Test Workflow full-time-assessment-${PROGRAM_YEAR}-costs-interface
createFakeConsolidatedFulltimeData(PROGRAM_YEAR);
assessmentConsolidatedData.studentDataIncomeAssistanceAmount = 1000;
assessmentConsolidatedData.studentDataRelationshipStatus = "married";
- assessmentConsolidatedData.studentDataIsYourPartnerAbleToReport = false;
- assessmentConsolidatedData.studentDataPartnerHasEmploymentInsuranceBenefits =
+ assessmentConsolidatedData.partner1HasEmploymentInsuranceBenefits =
YesNoOptions.No;
- assessmentConsolidatedData.studentDataPartnerHasTotalIncomeAssistance =
+ assessmentConsolidatedData.partner1HasTotalIncomeAssistance =
YesNoOptions.No;
- assessmentConsolidatedData.studentDataPartnerHasFedralProvincialPDReceipt =
+ assessmentConsolidatedData.partner1HasFedralProvincialPDReceipt =
YesNoOptions.No;
- assessmentConsolidatedData.studentDataEstimatedSpouseIncome = 0;
- assessmentConsolidatedData.studentDataPartnerBCEAIncomeAssistanceAmount = 1000;
+ assessmentConsolidatedData.partner1TotalIncome = 0;
+ assessmentConsolidatedData.partner1BCEAIncomeAssistanceAmount = 1000;
assessmentConsolidatedData.studentDataGovernmentFundingCosts = 100;
// Act
diff --git a/sources/packages/backend/workflow/test/2026-2027/fulltime-assessment/costs/fulltime-assessment-costs-living-allowance.e2e-spec.ts b/sources/packages/backend/workflow/test/2026-2027/fulltime-assessment/costs/fulltime-assessment-costs-living-allowance.e2e-spec.ts
index d810041cf5..3cc68269bb 100644
--- a/sources/packages/backend/workflow/test/2026-2027/fulltime-assessment/costs/fulltime-assessment-costs-living-allowance.e2e-spec.ts
+++ b/sources/packages/backend/workflow/test/2026-2027/fulltime-assessment/costs/fulltime-assessment-costs-living-allowance.e2e-spec.ts
@@ -160,13 +160,13 @@ describe(`E2E Test Workflow full-time-assessment-${PROGRAM_YEAR}-costs-living-al
createFakeConsolidatedFulltimeData(PROGRAM_YEAR);
assessmentConsolidatedData.studentDataHasDependents = YesNoOptions.No;
assessmentConsolidatedData.studentDataRelationshipStatus = "married";
- assessmentConsolidatedData.studentDataPartnerHasEmploymentInsuranceBenefits =
+ assessmentConsolidatedData.partner1HasEmploymentInsuranceBenefits =
YesNoOptions.No;
- assessmentConsolidatedData.studentDataPartnerHasTotalIncomeAssistance =
+ assessmentConsolidatedData.partner1HasTotalIncomeAssistance =
YesNoOptions.No;
- assessmentConsolidatedData.studentDataPartnerHasFedralProvincialPDReceipt =
+ assessmentConsolidatedData.partner1HasFedralProvincialPDReceipt =
YesNoOptions.No;
- assessmentConsolidatedData.studentDataEstimatedSpouseIncome = 0;
+ assessmentConsolidatedData.partner1TotalIncome = 0;
// Act
const calculatedAssessment = await executeFullTimeAssessmentForProgramYear(
PROGRAM_YEAR,
@@ -186,13 +186,13 @@ describe(`E2E Test Workflow full-time-assessment-${PROGRAM_YEAR}-costs-living-al
createFakeConsolidatedFulltimeData(PROGRAM_YEAR);
assessmentConsolidatedData.studentDataHasDependents = YesNoOptions.No;
assessmentConsolidatedData.studentDataRelationshipStatus = "marriedUnable";
- assessmentConsolidatedData.studentDataPartnerHasEmploymentInsuranceBenefits =
+ assessmentConsolidatedData.partner1HasEmploymentInsuranceBenefits =
YesNoOptions.No;
- assessmentConsolidatedData.studentDataPartnerHasTotalIncomeAssistance =
+ assessmentConsolidatedData.partner1HasTotalIncomeAssistance =
YesNoOptions.No;
- assessmentConsolidatedData.studentDataPartnerHasFedralProvincialPDReceipt =
+ assessmentConsolidatedData.partner1HasFedralProvincialPDReceipt =
YesNoOptions.No;
- assessmentConsolidatedData.studentDataEstimatedSpouseIncome = 0;
+ assessmentConsolidatedData.partner1TotalIncome = 0;
// Act
const calculatedAssessment = await executeFullTimeAssessmentForProgramYear(
PROGRAM_YEAR,
diff --git a/sources/packages/backend/workflow/test/2026-2027/fulltime-assessment/costs/fulltime-assessment-costs-transportation.e2e-spec.ts b/sources/packages/backend/workflow/test/2026-2027/fulltime-assessment/costs/fulltime-assessment-costs-transportation.e2e-spec.ts
index 37f6bee52a..1de902aa7c 100644
--- a/sources/packages/backend/workflow/test/2026-2027/fulltime-assessment/costs/fulltime-assessment-costs-transportation.e2e-spec.ts
+++ b/sources/packages/backend/workflow/test/2026-2027/fulltime-assessment/costs/fulltime-assessment-costs-transportation.e2e-spec.ts
@@ -82,15 +82,14 @@ describe(`E2E Test Workflow fulltime-assessment-${PROGRAM_YEAR}-costs-transporta
assessmentConsolidatedData.studentDataReturnTripHomeCost = 1000;
assessmentConsolidatedData.studentDataLivingWithPartner =
YesNoOptions.Yes;
- assessmentConsolidatedData.studentDataIsYourPartnerAbleToReport = false;
assessmentConsolidatedData.studentDataRelationshipStatus = "married";
- assessmentConsolidatedData.studentDataPartnerHasEmploymentInsuranceBenefits =
+ assessmentConsolidatedData.partner1HasEmploymentInsuranceBenefits =
YesNoOptions.No;
- assessmentConsolidatedData.studentDataPartnerHasTotalIncomeAssistance =
+ assessmentConsolidatedData.partner1HasTotalIncomeAssistance =
YesNoOptions.No;
- assessmentConsolidatedData.studentDataPartnerHasFedralProvincialPDReceipt =
+ assessmentConsolidatedData.partner1HasFedralProvincialPDReceipt =
YesNoOptions.No;
- assessmentConsolidatedData.studentDataEstimatedSpouseIncome = 0;
+ assessmentConsolidatedData.partner1TotalIncome = 0;
// Act
const calculatedAssessment =
await executeFullTimeAssessmentForProgramYear(
diff --git a/sources/packages/backend/workflow/test/2026-2027/fulltime-assessment/family-count/fulltime-assessment-family-size.e2e-spec.ts b/sources/packages/backend/workflow/test/2026-2027/fulltime-assessment/family-count/fulltime-assessment-family-size.e2e-spec.ts
index fa286a79da..ad448f8e45 100644
--- a/sources/packages/backend/workflow/test/2026-2027/fulltime-assessment/family-count/fulltime-assessment-family-size.e2e-spec.ts
+++ b/sources/packages/backend/workflow/test/2026-2027/fulltime-assessment/family-count/fulltime-assessment-family-size.e2e-spec.ts
@@ -17,7 +17,6 @@ describe(`E2E Test Workflow fulltime-assessment-${PROGRAM_YEAR}-family-size.`, (
const assessmentConsolidatedData =
createFakeConsolidatedFulltimeData(PROGRAM_YEAR);
assessmentConsolidatedData.studentDataRelationshipStatus = "married";
- assessmentConsolidatedData.studentDataIsYourPartnerAbleToReport = true;
assessmentConsolidatedData.partner1CRAReportedIncome = 22999;
assessmentConsolidatedData.studentDataDependants = [
createFakeStudentDependentEligible(
@@ -47,7 +46,6 @@ describe(`E2E Test Workflow fulltime-assessment-${PROGRAM_YEAR}-family-size.`, (
const assessmentConsolidatedData =
createFakeConsolidatedFulltimeData(PROGRAM_YEAR);
assessmentConsolidatedData.studentDataRelationshipStatus = "married";
- assessmentConsolidatedData.studentDataIsYourPartnerAbleToReport = true;
assessmentConsolidatedData.partner1CRAReportedIncome = 22999;
assessmentConsolidatedData.studentDataDependants = [
createFakeStudentDependentNotEligible(
@@ -79,7 +77,6 @@ describe(`E2E Test Workflow fulltime-assessment-${PROGRAM_YEAR}-family-size.`, (
const assessmentConsolidatedData =
createFakeConsolidatedFulltimeData(PROGRAM_YEAR);
assessmentConsolidatedData.studentDataRelationshipStatus = "married";
- assessmentConsolidatedData.studentDataIsYourPartnerAbleToReport = true;
assessmentConsolidatedData.partner1CRAReportedIncome = 22999;
assessmentConsolidatedData.studentDataDependants = [
createFakeStudentDependentEligible(
diff --git a/sources/packages/backend/workflow/test/2026-2027/parttime-assessment/appeals/eligibility/parttime-assessment-appeal-eligibility-partner-current-year-income.e2e-spec.ts b/sources/packages/backend/workflow/test/2026-2027/parttime-assessment/appeals/eligibility/parttime-assessment-appeal-eligibility-partner-current-year-income.e2e-spec.ts
new file mode 100644
index 0000000000..591acbd8fb
--- /dev/null
+++ b/sources/packages/backend/workflow/test/2026-2027/parttime-assessment/appeals/eligibility/parttime-assessment-appeal-eligibility-partner-current-year-income.e2e-spec.ts
@@ -0,0 +1,86 @@
+import { PROGRAM_YEAR } from "../../../constants/program-year.constants";
+import {
+ ZeebeMockedClient,
+ createFakeConsolidatedPartTimeData,
+ executePartTimeAssessmentForProgramYear,
+} from "../../../../test-utils";
+
+describe(`E2E Test Workflow parttime-assessment-${PROGRAM_YEAR}-appeal-eligibility-partner-current-year-income.`, () => {
+ it("Should evaluate the partner current year income appeal as eligible when the student is married.", async () => {
+ // Arrange
+ const assessmentConsolidatedData =
+ createFakeConsolidatedPartTimeData(PROGRAM_YEAR);
+ assessmentConsolidatedData.studentDataRelationshipStatus = "married";
+ assessmentConsolidatedData.partner1TotalIncome = 100002;
+ // Act
+ const calculatedAssessment = await executePartTimeAssessmentForProgramYear(
+ PROGRAM_YEAR,
+ assessmentConsolidatedData,
+ );
+
+ // Assert
+ expect(
+ calculatedAssessment.variables
+ .isEligibleForPartnerCurrentYearIncomeAppeal,
+ ).toBe(true);
+ });
+
+ it("Should evaluate the partner current year income appeal as not eligible when the student is single.", async () => {
+ // Arrange
+ const assessmentConsolidatedData =
+ createFakeConsolidatedPartTimeData(PROGRAM_YEAR);
+ assessmentConsolidatedData.studentDataRelationshipStatus = "single";
+ // Act
+ const calculatedAssessment = await executePartTimeAssessmentForProgramYear(
+ PROGRAM_YEAR,
+ assessmentConsolidatedData,
+ );
+
+ // Assert
+ expect(
+ calculatedAssessment.variables
+ .isEligibleForPartnerCurrentYearIncomeAppeal,
+ ).toBe(false);
+ });
+
+ it("Should evaluate the partner current year income appeal as not eligible when the student relationship status is other.", async () => {
+ // Arrange
+ const assessmentConsolidatedData =
+ createFakeConsolidatedPartTimeData(PROGRAM_YEAR);
+ assessmentConsolidatedData.studentDataRelationshipStatus = "other";
+ // Act
+ const calculatedAssessment = await executePartTimeAssessmentForProgramYear(
+ PROGRAM_YEAR,
+ assessmentConsolidatedData,
+ );
+
+ // Assert
+ expect(
+ calculatedAssessment.variables
+ .isEligibleForPartnerCurrentYearIncomeAppeal,
+ ).toBe(false);
+ });
+
+ it("Should evaluate the partner current year income appeal as not eligible when the student relationship status is unable to report.", async () => {
+ // Arrange
+ const assessmentConsolidatedData =
+ createFakeConsolidatedPartTimeData(PROGRAM_YEAR);
+ assessmentConsolidatedData.studentDataRelationshipStatus = "marriedUnable";
+ // Act
+ const calculatedAssessment = await executePartTimeAssessmentForProgramYear(
+ PROGRAM_YEAR,
+ assessmentConsolidatedData,
+ );
+
+ // Assert
+ expect(
+ calculatedAssessment.variables
+ .isEligibleForPartnerCurrentYearIncomeAppeal,
+ ).toBe(false);
+ });
+
+ afterAll(async () => {
+ // Closes the singleton instance created during test executions.
+ await ZeebeMockedClient.getMockedZeebeInstance().close();
+ });
+});
diff --git a/sources/packages/backend/workflow/test/2026-2027/parttime-assessment/appeals/parttime-assessment-partner-current-year-income.e2e-spec.ts b/sources/packages/backend/workflow/test/2026-2027/parttime-assessment/appeals/parttime-assessment-partner-current-year-income.e2e-spec.ts
new file mode 100644
index 0000000000..1a6c5a3274
--- /dev/null
+++ b/sources/packages/backend/workflow/test/2026-2027/parttime-assessment/appeals/parttime-assessment-partner-current-year-income.e2e-spec.ts
@@ -0,0 +1,78 @@
+import { PROGRAM_YEAR } from "../../constants/program-year.constants";
+import {
+ ZeebeMockedClient,
+ createFakeConsolidatedPartTimeData,
+ executePartTimeAssessmentForProgramYear,
+} from "../../../test-utils";
+
+describe(`E2E Test Workflow parttime-assessment-${PROGRAM_YEAR}-partner-current-year-income.`, () => {
+ it("Should use application values when there is no partner current year income appeal and no CRA reported income.", async () => {
+ // Arrange
+ const assessmentConsolidatedData =
+ createFakeConsolidatedPartTimeData(PROGRAM_YEAR);
+ assessmentConsolidatedData.studentDataRelationshipStatus = "married";
+ assessmentConsolidatedData.appealsPartnerCurrentYearIncomeAppealData = null;
+ assessmentConsolidatedData.partner1TotalIncome = 1234;
+ assessmentConsolidatedData.partner1CRAReportedIncome = null;
+
+ // Act
+ const calculatedAssessment = await executePartTimeAssessmentForProgramYear(
+ PROGRAM_YEAR,
+ assessmentConsolidatedData,
+ );
+
+ // Assert
+ expect(
+ calculatedAssessment.variables.calculatedDataPartner1TotalIncome,
+ ).toBe(1234);
+ });
+
+ it("Should use the appeal current year income values when there is a partner current year income appeal and the partner has no CRA reported income.", async () => {
+ // Arrange
+ const assessmentConsolidatedData =
+ createFakeConsolidatedPartTimeData(PROGRAM_YEAR);
+ assessmentConsolidatedData.studentDataRelationshipStatus = "married";
+ assessmentConsolidatedData.appealsPartnerCurrentYearIncomeAppealData = {
+ currentYearIncome: 20001,
+ };
+ assessmentConsolidatedData.partner1TotalIncome = 100002;
+ assessmentConsolidatedData.partner1CRAReportedIncome = null;
+
+ // Act
+ const calculatedAssessment = await executePartTimeAssessmentForProgramYear(
+ PROGRAM_YEAR,
+ assessmentConsolidatedData,
+ );
+
+ // Assert
+ expect(
+ calculatedAssessment.variables.calculatedDataPartner1TotalIncome,
+ ).toBe(20001);
+ });
+
+ it("Should use the appeal current year income values when there is a partner current year income appeal and the partner has CRA reported income.", async () => {
+ // Arrange
+ const assessmentConsolidatedData =
+ createFakeConsolidatedPartTimeData(PROGRAM_YEAR);
+ assessmentConsolidatedData.studentDataRelationshipStatus = "married";
+ assessmentConsolidatedData.appealsPartnerCurrentYearIncomeAppealData = {
+ currentYearIncome: 20001,
+ };
+ assessmentConsolidatedData.partner1CRAReportedIncome = 1000001;
+ assessmentConsolidatedData.partner1TotalIncome = 100002;
+ // Act
+ const calculatedAssessment = await executePartTimeAssessmentForProgramYear(
+ PROGRAM_YEAR,
+ assessmentConsolidatedData,
+ );
+ // Assert
+ expect(
+ calculatedAssessment.variables.calculatedDataPartner1TotalIncome,
+ ).toBe(20001);
+ });
+
+ afterAll(async () => {
+ // Closes the singleton instance created during test executions.
+ await ZeebeMockedClient.getMockedZeebeInstance().close();
+ });
+});
diff --git a/sources/packages/backend/workflow/test/2026-2027/parttime-assessment/awards-amounts/parttime-assessment-awards-amount-BCAG.e2e-spec.ts b/sources/packages/backend/workflow/test/2026-2027/parttime-assessment/awards-amounts/parttime-assessment-awards-amount-BCAG.e2e-spec.ts
index aaf6c16c54..6d01a732bd 100644
--- a/sources/packages/backend/workflow/test/2026-2027/parttime-assessment/awards-amounts/parttime-assessment-awards-amount-BCAG.e2e-spec.ts
+++ b/sources/packages/backend/workflow/test/2026-2027/parttime-assessment/awards-amounts/parttime-assessment-awards-amount-BCAG.e2e-spec.ts
@@ -13,7 +13,6 @@ describe(`E2E Test Workflow parttime-assessment-${PROGRAM_YEAR}-awards-amount-BC
createFakeConsolidatedPartTimeData(PROGRAM_YEAR);
assessmentConsolidatedData.studentDataCRAReportedIncome = 20001;
assessmentConsolidatedData.studentDataRelationshipStatus = "married";
- assessmentConsolidatedData.studentDataIsYourPartnerAbleToReport = true;
assessmentConsolidatedData.partner1CRAReportedIncome = 22999;
// Act
const calculatedAssessment = await executePartTimeAssessmentForProgramYear(
@@ -47,7 +46,6 @@ describe(`E2E Test Workflow parttime-assessment-${PROGRAM_YEAR}-awards-amount-BC
createFakeConsolidatedPartTimeData(PROGRAM_YEAR);
assessmentConsolidatedData.studentDataCRAReportedIncome = 20001;
assessmentConsolidatedData.studentDataRelationshipStatus = "married";
- assessmentConsolidatedData.studentDataIsYourPartnerAbleToReport = true;
assessmentConsolidatedData.partner1CRAReportedIncome = 33999;
// Act
const calculatedAssessment = await executePartTimeAssessmentForProgramYear(
@@ -88,7 +86,6 @@ describe(`E2E Test Workflow parttime-assessment-${PROGRAM_YEAR}-awards-amount-BC
createFakeConsolidatedPartTimeData(PROGRAM_YEAR);
assessmentConsolidatedData.studentDataCRAReportedIncome = 20001;
assessmentConsolidatedData.studentDataRelationshipStatus = "married";
- assessmentConsolidatedData.studentDataIsYourPartnerAbleToReport = true;
assessmentConsolidatedData.partner1CRAReportedIncome = 22999;
// Public institution
assessmentConsolidatedData.institutionType = InstitutionTypes.BCPublic;
@@ -134,7 +131,6 @@ describe(`E2E Test Workflow parttime-assessment-${PROGRAM_YEAR}-awards-amount-BC
createFakeConsolidatedPartTimeData(PROGRAM_YEAR);
assessmentConsolidatedData.studentDataCRAReportedIncome = 20001;
assessmentConsolidatedData.studentDataRelationshipStatus = "married";
- assessmentConsolidatedData.studentDataIsYourPartnerAbleToReport = true;
assessmentConsolidatedData.partner1CRAReportedIncome = 22999;
// Public institution
assessmentConsolidatedData.institutionType = InstitutionTypes.BCPublic;
@@ -163,7 +159,6 @@ describe(`E2E Test Workflow parttime-assessment-${PROGRAM_YEAR}-awards-amount-BC
createFakeConsolidatedPartTimeData(PROGRAM_YEAR);
assessmentConsolidatedData.studentDataCRAReportedIncome = 20001;
assessmentConsolidatedData.studentDataRelationshipStatus = "married";
- assessmentConsolidatedData.studentDataIsYourPartnerAbleToReport = true;
assessmentConsolidatedData.partner1CRAReportedIncome = 22999;
// Public institution
assessmentConsolidatedData.institutionType = InstitutionTypes.BCPublic;
diff --git a/sources/packages/backend/workflow/test/2026-2027/parttime-assessment/awards-amounts/parttime-assessment-awards-amount-CSGD.e2e-spec.ts b/sources/packages/backend/workflow/test/2026-2027/parttime-assessment/awards-amounts/parttime-assessment-awards-amount-CSGD.e2e-spec.ts
index 943df012c9..79a6c5defd 100644
--- a/sources/packages/backend/workflow/test/2026-2027/parttime-assessment/awards-amounts/parttime-assessment-awards-amount-CSGD.e2e-spec.ts
+++ b/sources/packages/backend/workflow/test/2026-2027/parttime-assessment/awards-amounts/parttime-assessment-awards-amount-CSGD.e2e-spec.ts
@@ -18,7 +18,6 @@ describe(`E2E Test Workflow parttime-assessment-${PROGRAM_YEAR}-awards-amount-CS
createFakeConsolidatedPartTimeData(PROGRAM_YEAR);
assessmentConsolidatedData.studentDataCRAReportedIncome = 20000;
assessmentConsolidatedData.studentDataRelationshipStatus = "married";
- assessmentConsolidatedData.studentDataIsYourPartnerAbleToReport = true;
assessmentConsolidatedData.partner1CRAReportedIncome = 20000;
assessmentConsolidatedData.studentDataHasDependents = YesNoOptions.Yes;
assessmentConsolidatedData.studentDataDependants = [
@@ -64,7 +63,6 @@ describe(`E2E Test Workflow parttime-assessment-${PROGRAM_YEAR}-awards-amount-CS
createFakeConsolidatedPartTimeData(PROGRAM_YEAR);
assessmentConsolidatedData.studentDataCRAReportedIncome = 52000;
assessmentConsolidatedData.studentDataRelationshipStatus = "married";
- assessmentConsolidatedData.studentDataIsYourPartnerAbleToReport = true;
assessmentConsolidatedData.partner1CRAReportedIncome = 42000;
assessmentConsolidatedData.studentDataHasDependents = YesNoOptions.Yes;
assessmentConsolidatedData.studentDataDependants = [
@@ -146,7 +144,6 @@ describe(`E2E Test Workflow parttime-assessment-${PROGRAM_YEAR}-awards-amount-CS
createFakeConsolidatedPartTimeData(PROGRAM_YEAR);
assessmentConsolidatedData.studentDataCRAReportedIncome = 20000;
assessmentConsolidatedData.studentDataRelationshipStatus = "married";
- assessmentConsolidatedData.studentDataIsYourPartnerAbleToReport = true;
assessmentConsolidatedData.partner1CRAReportedIncome = 20000;
assessmentConsolidatedData.studentDataHasDependents = YesNoOptions.Yes;
assessmentConsolidatedData.studentDataDependants = [
@@ -190,7 +187,6 @@ describe(`E2E Test Workflow parttime-assessment-${PROGRAM_YEAR}-awards-amount-CS
createFakeConsolidatedPartTimeData(PROGRAM_YEAR);
assessmentConsolidatedData.studentDataCRAReportedIncome = 40000;
assessmentConsolidatedData.studentDataRelationshipStatus = "married";
- assessmentConsolidatedData.studentDataIsYourPartnerAbleToReport = true;
assessmentConsolidatedData.partner1CRAReportedIncome = 40000;
assessmentConsolidatedData.studentDataHasDependents = YesNoOptions.Yes;
assessmentConsolidatedData.studentDataDependants = [
@@ -263,7 +259,6 @@ describe(`E2E Test Workflow parttime-assessment-${PROGRAM_YEAR}-awards-amount-CS
createFakeConsolidatedPartTimeData(PROGRAM_YEAR);
assessmentConsolidatedData.studentDataCRAReportedIncome = 35000;
assessmentConsolidatedData.studentDataRelationshipStatus = "married";
- assessmentConsolidatedData.studentDataIsYourPartnerAbleToReport = true;
assessmentConsolidatedData.partner1CRAReportedIncome = 35000;
assessmentConsolidatedData.studentDataHasDependents = YesNoOptions.Yes;
assessmentConsolidatedData.studentDataDependants = [
diff --git a/sources/packages/backend/workflow/test/2026-2027/parttime-assessment/awards-amounts/parttime-assessment-awards-amount-CSPT.e2e-spec.ts b/sources/packages/backend/workflow/test/2026-2027/parttime-assessment/awards-amounts/parttime-assessment-awards-amount-CSPT.e2e-spec.ts
index 9d287f3d0c..c4d0be163f 100644
--- a/sources/packages/backend/workflow/test/2026-2027/parttime-assessment/awards-amounts/parttime-assessment-awards-amount-CSPT.e2e-spec.ts
+++ b/sources/packages/backend/workflow/test/2026-2027/parttime-assessment/awards-amounts/parttime-assessment-awards-amount-CSPT.e2e-spec.ts
@@ -12,7 +12,6 @@ describe(`E2E Test Workflow parttime-assessment-${PROGRAM_YEAR}-awards-amount-CS
createFakeConsolidatedPartTimeData(PROGRAM_YEAR);
assessmentConsolidatedData.studentDataCRAReportedIncome = 20001;
assessmentConsolidatedData.studentDataRelationshipStatus = "married";
- assessmentConsolidatedData.studentDataIsYourPartnerAbleToReport = true;
assessmentConsolidatedData.partner1CRAReportedIncome = 22999;
// Act
const calculatedAssessment = await executePartTimeAssessmentForProgramYear(
@@ -42,7 +41,6 @@ describe(`E2E Test Workflow parttime-assessment-${PROGRAM_YEAR}-awards-amount-CS
createFakeConsolidatedPartTimeData(PROGRAM_YEAR);
assessmentConsolidatedData.studentDataCRAReportedIncome = 20001;
assessmentConsolidatedData.studentDataRelationshipStatus = "married";
- assessmentConsolidatedData.studentDataIsYourPartnerAbleToReport = true;
assessmentConsolidatedData.partner1CRAReportedIncome = 33999;
// Act
const calculatedAssessment = await executePartTimeAssessmentForProgramYear(
@@ -70,7 +68,6 @@ describe(`E2E Test Workflow parttime-assessment-${PROGRAM_YEAR}-awards-amount-CS
createFakeConsolidatedPartTimeData(PROGRAM_YEAR);
assessmentConsolidatedData.studentDataCRAReportedIncome = 20001;
assessmentConsolidatedData.studentDataRelationshipStatus = "married";
- assessmentConsolidatedData.studentDataIsYourPartnerAbleToReport = true;
assessmentConsolidatedData.partner1CRAReportedIncome = 22999;
// Act
const calculatedAssessment = await executePartTimeAssessmentForProgramYear(
@@ -107,7 +104,6 @@ describe(`E2E Test Workflow parttime-assessment-${PROGRAM_YEAR}-awards-amount-CS
createFakeConsolidatedPartTimeData(PROGRAM_YEAR);
assessmentConsolidatedData.studentDataCRAReportedIncome = 20001;
assessmentConsolidatedData.studentDataRelationshipStatus = "married";
- assessmentConsolidatedData.studentDataIsYourPartnerAbleToReport = true;
assessmentConsolidatedData.partner1CRAReportedIncome = 22999;
assessmentConsolidatedData.programYearTotalPartTimeCSPT = undefined;
// Act
@@ -129,7 +125,6 @@ describe(`E2E Test Workflow parttime-assessment-${PROGRAM_YEAR}-awards-amount-CS
createFakeConsolidatedPartTimeData(PROGRAM_YEAR);
assessmentConsolidatedData.studentDataCRAReportedIncome = 60001;
assessmentConsolidatedData.studentDataRelationshipStatus = "married";
- assessmentConsolidatedData.studentDataIsYourPartnerAbleToReport = true;
assessmentConsolidatedData.partner1CRAReportedIncome = 22999;
assessmentConsolidatedData.programYearTotalPartTimeCSPT = 795;
// Act
diff --git a/sources/packages/backend/workflow/test/2026-2027/parttime-assessment/costs/parttime-assessment-total-partner-income.e2e-spec.ts b/sources/packages/backend/workflow/test/2026-2027/parttime-assessment/costs/parttime-assessment-total-partner-income.e2e-spec.ts
index d6746180d6..efc61a8d9c 100644
--- a/sources/packages/backend/workflow/test/2026-2027/parttime-assessment/costs/parttime-assessment-total-partner-income.e2e-spec.ts
+++ b/sources/packages/backend/workflow/test/2026-2027/parttime-assessment/costs/parttime-assessment-total-partner-income.e2e-spec.ts
@@ -6,12 +6,11 @@ import {
} from "../../../test-utils";
describe(`E2E Test Workflow parttime-assessment-${PROGRAM_YEAR}-total-partner-income.`, () => {
- it("Should calculate total partner income as the CRA verified income value when the student is married and the partner is able to report their financial information.", async () => {
+ it("Should calculate total partner income as the CRA verified income value when the student is married and the partner had CRA verified income.", async () => {
// Arrange
const assessmentConsolidatedData =
createFakeConsolidatedPartTimeData(PROGRAM_YEAR);
assessmentConsolidatedData.studentDataRelationshipStatus = "married";
- assessmentConsolidatedData.studentDataIsYourPartnerAbleToReport = true;
assessmentConsolidatedData.partner1CRAReportedIncome = 30000;
// Act
@@ -24,47 +23,21 @@ describe(`E2E Test Workflow parttime-assessment-${PROGRAM_YEAR}-total-partner-in
expect(
calculatedAssessment.variables.calculatedDataPartner1TotalIncome,
).toBe(30000);
- // As the student did not report the current year partner income, it must be undefined.
- expect(
- calculatedAssessment.variables.studentDataCurrentYearPartnerIncome,
- ).toBe(undefined);
+ expect(calculatedAssessment.variables.calculatedDataTotalFamilyIncome).toBe(
+ calculatedAssessment.variables.calculatedDataPartner1TotalIncome +
+ calculatedAssessment.variables.calculatedDataStudentTotalIncome,
+ );
});
it(
- "Should calculate total partner income as self reported partner's current year income when the student is married and need to self report the partner financial information" +
- " as their partner's current year income needs to be reported.",
- async () => {
- // Arrange
- const assessmentConsolidatedData =
- createFakeConsolidatedPartTimeData(PROGRAM_YEAR);
- assessmentConsolidatedData.studentDataRelationshipStatus = "married";
- assessmentConsolidatedData.studentDataIsYourPartnerAbleToReport = false;
- assessmentConsolidatedData.studentDataCurrentYearPartnerIncome = 10000;
-
- // Act
- const calculatedAssessment =
- await executePartTimeAssessmentForProgramYear(
- PROGRAM_YEAR,
- assessmentConsolidatedData,
- );
- // Assert
- // Calculated total partner income must be 10000 based on current year income being the top priority for income.
- expect(
- calculatedAssessment.variables.calculatedDataPartner1TotalIncome,
- ).toBe(10000);
- },
- );
-
- it(
- "Should calculate total partner income as self reported partner's tax return income when the student is married and need to self report the partner financial information" +
- " as their partner is not eligible for BC Services Card.",
+ "Should calculate total partner income as self reported partner's tax return income when the student is married and" +
+ " their partner did not have CRA verified income.",
async () => {
// Arrange
const assessmentConsolidatedData =
createFakeConsolidatedPartTimeData(PROGRAM_YEAR);
assessmentConsolidatedData.studentDataRelationshipStatus = "married";
- assessmentConsolidatedData.studentDataIsYourPartnerAbleToReport = false;
- assessmentConsolidatedData.studentDataEstimatedSpouseIncome = 15000;
+ assessmentConsolidatedData.partner1TotalIncome = 15000;
// No income verification happened as student self reported partner's tax return income.
assessmentConsolidatedData.partner1CRAReportedIncome = null;
@@ -79,10 +52,12 @@ describe(`E2E Test Workflow parttime-assessment-${PROGRAM_YEAR}-total-partner-in
expect(
calculatedAssessment.variables.calculatedDataPartner1TotalIncome,
).toBe(15000);
- // As the student did not report the current year partner income, it must be undefined.
expect(
- calculatedAssessment.variables.studentDataCurrentYearPartnerIncome,
- ).toBe(undefined);
+ calculatedAssessment.variables.calculatedDataTotalFamilyIncome,
+ ).toBe(
+ calculatedAssessment.variables.calculatedDataPartner1TotalIncome +
+ calculatedAssessment.variables.calculatedDataStudentTotalIncome,
+ );
},
);
diff --git a/sources/packages/backend/workflow/test/2026-2027/parttime-assessment/family-count/parttime-assessment-family-size.e2e-spec.ts b/sources/packages/backend/workflow/test/2026-2027/parttime-assessment/family-count/parttime-assessment-family-size.e2e-spec.ts
index ac517381ff..f6daad8897 100644
--- a/sources/packages/backend/workflow/test/2026-2027/parttime-assessment/family-count/parttime-assessment-family-size.e2e-spec.ts
+++ b/sources/packages/backend/workflow/test/2026-2027/parttime-assessment/family-count/parttime-assessment-family-size.e2e-spec.ts
@@ -17,7 +17,6 @@ describe(`E2E Test Workflow parttime-assessment-${PROGRAM_YEAR}-family-size.`, (
const assessmentConsolidatedData =
createFakeConsolidatedPartTimeData(PROGRAM_YEAR);
assessmentConsolidatedData.studentDataRelationshipStatus = "married";
- assessmentConsolidatedData.studentDataIsYourPartnerAbleToReport = true;
assessmentConsolidatedData.partner1CRAReportedIncome = 22999;
assessmentConsolidatedData.studentDataDependants = [
createFakeStudentDependentEligible(
@@ -48,7 +47,6 @@ describe(`E2E Test Workflow parttime-assessment-${PROGRAM_YEAR}-family-size.`, (
const assessmentConsolidatedData =
createFakeConsolidatedPartTimeData(PROGRAM_YEAR);
assessmentConsolidatedData.studentDataRelationshipStatus = "married";
- assessmentConsolidatedData.studentDataIsYourPartnerAbleToReport = true;
assessmentConsolidatedData.partner1CRAReportedIncome = 22999;
assessmentConsolidatedData.studentDataDependants = [
createFakeStudentDependentNotEligible(
@@ -81,7 +79,6 @@ describe(`E2E Test Workflow parttime-assessment-${PROGRAM_YEAR}-family-size.`, (
const assessmentConsolidatedData =
createFakeConsolidatedPartTimeData(PROGRAM_YEAR);
assessmentConsolidatedData.studentDataRelationshipStatus = "married";
- assessmentConsolidatedData.studentDataIsYourPartnerAbleToReport = true;
assessmentConsolidatedData.partner1CRAReportedIncome = 22999;
assessmentConsolidatedData.studentDataDependants = [
createFakeStudentDependentEligible(
diff --git a/sources/packages/backend/workflow/test/models/assessment.model.ts b/sources/packages/backend/workflow/test/models/assessment.model.ts
index 553a7d483b..543e31deda 100644
--- a/sources/packages/backend/workflow/test/models/assessment.model.ts
+++ b/sources/packages/backend/workflow/test/models/assessment.model.ts
@@ -143,10 +143,10 @@ export interface AssessmentConsolidatedData extends JSONDoc {
appealsPartnerCurrentYearIncomeAppealData?: JSONDoc;
appealsParentCurrentYearIncomeAppealData?: JSONDoc;
appealsStudentExceptionalExpenseAppealData?: JSONDoc;
- studentDataIsYourPartnerAbleToReport?: boolean;
+ studentDataIsYourPartnerAbleToReport?: boolean; // No longer used in PY 26/27 and beyond.
studentDataParentValidSinNumber?: YesNoOptions;
studentDataNumberOfParents?: 1 | 2;
- studentDataEstimatedSpouseIncome?: number;
+ studentDataEstimatedSpouseIncome?: number; // No longer used in PY 26/27 and beyond.
studentDataCurrentYearPartnerIncome?: number; // No longer used in PY 26/27 and beyond.
studentDataLivingWithPartner?: YesNoOptions;
studentDataCRAReportedIncome?: number;
@@ -154,12 +154,12 @@ export interface AssessmentConsolidatedData extends JSONDoc {
studentDataGovernmentFundingCosts?: number;
studentDataNonGovernmentFundingCosts?: number;
studentDataParentVoluntaryContributionsCosts?: number;
- studentDataPartnerStudyWeeks?: number;
- studentDataPartnerEmploymentInsurance?: YesNoOptions;
- studentDataPartnerFedralProvincialPDReceiptCost?: number;
- studentDataPartnerChildSupportCosts?: number;
- studentDataPartnerCaringForDependant?: YesNoOptions;
- studentDataPartnerTotalIncomeAssistance?: number;
+ studentDataPartnerStudyWeeks?: number; // No longer used in PY 26/27 and beyond.
+ studentDataPartnerEmploymentInsurance?: YesNoOptions; // No longer used in PY 26/27 and beyond.
+ studentDataPartnerFedralProvincialPDReceiptCost?: number; // No longer used in PY 26/27 and beyond.
+ studentDataPartnerChildSupportCosts?: number; // No longer used in PY 26/27 and beyond.
+ studentDataPartnerCaringForDependant?: YesNoOptions; // No longer used in PY 26/27 and beyond.
+ studentDataPartnerTotalIncomeAssistance?: number; // No longer used in PY 26/27 and beyond.
studentDataVoluntaryContributions?: number;
studentDataScholarshipAmount?: number;
studentDataStudentParentsTotalIncome?: number;
@@ -174,7 +174,7 @@ export interface AssessmentConsolidatedData extends JSONDoc {
parent1SupportingUserId?: number;
parent1Contributions?: number;
parent1Ei?: number;
- parent1NetAssests?: number;
+ parent1NetAssets?: number;
parent1Tax?: number;
parent1TotalIncome?: number;
parent1DependentTable?: StudentDependent[];
@@ -186,7 +186,7 @@ export interface AssessmentConsolidatedData extends JSONDoc {
parent2CppSelfemploymentOther?: number;
parent2DependentTable?: StudentDependent[];
parent2Ei?: number;
- parent2NetAssests?: number;
+ parent2NetAssets?: number;
parent2Tax?: number;
parent2TotalIncome?: number;
parent2CRAReportedIncome?: number;
@@ -219,10 +219,10 @@ export interface AssessmentConsolidatedData extends JSONDoc {
applicationStatus: string;
applicationEditStatus: ApplicationEditStatus;
applicationHasNOAApproval: boolean;
- studentDataPartnerHasEmploymentInsuranceBenefits?: YesNoOptions;
- studentDataPartnerHasFedralProvincialPDReceipt?: YesNoOptions;
- studentDataPartnerHasTotalIncomeAssistance?: YesNoOptions;
- studentDataPartnerBCEAIncomeAssistanceAmount?: number;
+ studentDataPartnerHasEmploymentInsuranceBenefits?: YesNoOptions; // No longer used in PY 26/27 and beyond.
+ studentDataPartnerHasFedralProvincialPDReceipt?: YesNoOptions; // No longer used in PY 26/27 and beyond.
+ studentDataPartnerHasTotalIncomeAssistance?: YesNoOptions; // No longer used in PY 26/27 and beyond.
+ studentDataPartnerBCEAIncomeAssistanceAmount?: number; // No longer used in PY 26/27 and beyond.
studentDataPartnerIsAbleToReport?: YesNoOptions;
partner1HasEmploymentInsuranceBenefits?: YesNoOptions;
partner1HasFedralProvincialPDReceipt?: YesNoOptions;
@@ -408,6 +408,9 @@ export interface CalculatedAssessmentModel {
dmnFullTimeLivingCategory: string;
isEligibleForRoomAndBoardAppeal?: boolean;
isEligibleForStepParentWaiverAppeal?: boolean;
+ isEligibleForStudentCurrentYearIncomeAppeal?: boolean;
+ isEligibleForPartnerCurrentYearIncomeAppeal?: boolean;
+ isEligibleForParentCurrentYearIncomeAppeal?: boolean;
calculatedDataWaivedParent?: number;
// Common variables used in both full-time and part-time.
// CSGP
diff --git a/sources/packages/backend/workflow/test/test-utils/factories/assessment-consolidated-data.ts b/sources/packages/backend/workflow/test/test-utils/factories/assessment-consolidated-data.ts
index 9bf61b528f..669b1b1257 100644
--- a/sources/packages/backend/workflow/test/test-utils/factories/assessment-consolidated-data.ts
+++ b/sources/packages/backend/workflow/test/test-utils/factories/assessment-consolidated-data.ts
@@ -109,33 +109,33 @@ export function createFakePartTimeAssessmentConsolidatedData(
*/
function getDefaultAssessmentConsolidatedData(): AssessmentConsolidatedData {
return {
- appealsStudentIncomeAppealData: null,
- appealsPartnerIncomeAppealData: null,
- appealsStudentDisabilityAppealData: null,
- appealsStudentAdditionalTransportationAppealData: null,
- appealsPartnerInformationAndIncomeAppealData: null,
- appealsStudentFinancialInformationAppealData: null,
- appealsStudentHasDependentsAppealData: null,
- appealsStudentDependantsAppealData: null,
+ appealsStudentIncomeAppealData: null, // No longer used in PY 26/27 and beyond.
+ appealsPartnerIncomeAppealData: null, // No longer used in PY 26/27 and beyond.
+ appealsStudentDisabilityAppealData: null, // No longer used in PY 26/27 and beyond.
+ appealsStudentAdditionalTransportationAppealData: null, // No longer used in PY 26/27 and beyond.
+ appealsPartnerInformationAndIncomeAppealData: null, // No longer used in PY 26/27 and beyond.
+ appealsStudentFinancialInformationAppealData: null, // No longer used in PY 26/27 and beyond.
+ appealsStudentHasDependentsAppealData: null, // No longer used in PY 26/27 and beyond.
+ appealsStudentDependantsAppealData: null, // No longer used in PY 26/27 and beyond.
appealsRoomAndBoardCostsAppealData: null,
appealsStepParentWaiverAppealData: null,
- studentDataIsYourPartnerAbleToReport: null,
+ studentDataIsYourPartnerAbleToReport: null, // No longer used in PY 26/27 and beyond.
studentDataParentValidSinNumber: null,
studentDataNumberOfParents: null,
- studentDataEstimatedSpouseIncome: null,
+ studentDataEstimatedSpouseIncome: null, // No longer used in PY 26/27 and beyond.
studentDataLivingWithPartner: null,
studentDataCRAReportedIncome: null,
studentDataDependants: null,
studentDataGovernmentFundingCosts: null,
studentDataNonGovernmentFundingCosts: null,
studentDataParentVoluntaryContributionsCosts: null,
- studentDataPartnerStudyWeeks: null,
- studentDataPartnerEmploymentInsurance: null,
- studentDataPartnerFedralProvincialPDReceiptCost: null,
- studentDataPartnerChildSupportCosts: null,
- studentDataPartnerBCEAIncomeAssistanceAmount: null,
- studentDataPartnerCaringForDependant: null,
- studentDataPartnerTotalIncomeAssistance: null,
+ studentDataPartnerStudyWeeks: null, // No longer used in PY 26/27 and beyond.
+ studentDataPartnerEmploymentInsurance: null, // No longer used in PY 26/27 and beyond.
+ studentDataPartnerFedralProvincialPDReceiptCost: null, // No longer used in PY 26/27 and beyond.
+ studentDataPartnerChildSupportCosts: null, // No longer used in PY 26/27 and beyond.
+ studentDataPartnerBCEAIncomeAssistanceAmount: null, // No longer used in PY 26/27 and beyond.
+ studentDataPartnerCaringForDependant: null, // No longer used in PY 26/27 and beyond.
+ studentDataPartnerTotalIncomeAssistance: null, // No longer used in PY 26/27 and beyond.
studentDataVoluntaryContributions: null,
studentDataScholarshipAmount: null,
studentDataChildSupportAndOrSpousalSupport: null,
@@ -151,7 +151,7 @@ function getDefaultAssessmentConsolidatedData(): AssessmentConsolidatedData {
offeringCourseLoad: null,
parent1Contributions: null,
parent1Ei: null,
- parent1NetAssests: null,
+ parent1NetAssets: null,
parent1Tax: null,
parent1TotalIncome: null,
parent1DependentTable: [],
@@ -162,7 +162,7 @@ function getDefaultAssessmentConsolidatedData(): AssessmentConsolidatedData {
parent2CppSelfemploymentOther: null,
parent2DependentTable: [],
parent2Ei: null,
- parent2NetAssests: null,
+ parent2NetAssets: null,
parent2Tax: null,
parent2TotalIncome: null,
parent2CRAReportedIncome: null,
@@ -179,9 +179,9 @@ function getDefaultAssessmentConsolidatedData(): AssessmentConsolidatedData {
applicationStatus: null,
applicationEditStatus: null,
applicationHasNOAApproval: null,
- studentDataPartnerHasEmploymentInsuranceBenefits: null,
- studentDataPartnerHasFedralProvincialPDReceipt: null,
- studentDataPartnerHasTotalIncomeAssistance: null,
+ studentDataPartnerHasEmploymentInsuranceBenefits: null, // No longer used in PY 26/27 and beyond.
+ studentDataPartnerHasFedralProvincialPDReceipt: null, // No longer used in PY 26/27 and beyond.
+ studentDataPartnerHasTotalIncomeAssistance: null, // No longer used in PY 26/27 and beyond.
partner1HasEmploymentInsuranceBenefits: null,
partner1HasFedralProvincialPDReceipt: null,
partner1HasTotalIncomeAssistance: null,