diff --git a/features/fedramp_extensions.feature b/features/fedramp_extensions.feature
index b4168d329..5885b1654 100644
--- a/features/fedramp_extensions.feature
+++ b/features/fedramp_extensions.feature
@@ -41,8 +41,11 @@ Examples:
| component-has-authentication-method |
| component-has-diagram-label |
| component-has-non-provider-responsible-role |
+ | component-has-proof-of-compliance-link |
| component-has-provider-responsible-role |
| component-has-used-by-link |
+ | component-has-valid-proof-of-compliance-link |
+ | component-has-validation-reference |
| component-type |
| connection-security |
| control-implementation-status |
@@ -183,6 +186,7 @@ Examples:
| user-privilege-level |
| user-sensitivity-level |
| user-type |
+ | validation-reference-has-correct-format |
#END_DYNAMIC_CONSTRAINT_IDS
@constraints
@@ -232,8 +236,14 @@ Examples:
| component-has-diagram-label-PASS.yaml |
| component-has-non-provider-responsible-role-FAIL.yaml |
| component-has-non-provider-responsible-role-PASS.yaml |
+ | component-has-proof-of-compliance-link-FAIL.yaml |
+ | component-has-proof-of-compliance-link-PASS.yaml |
| component-has-used-by-link-FAIL.yaml |
| component-has-used-by-link-PASS.yaml |
+ | component-has-valid-proof-of-compliance-link-FAIL.yaml |
+ | component-has-valid-proof-of-compliance-link-PASS.yaml |
+ | component-has-validation-reference-FAIL.yaml |
+ | component-has-validation-reference-PASS.yaml |
| component-responsible-role-references-party-FAIL.yaml |
| component-responsible-role-references-party-PASS.yaml |
| component-type-FAIL.yaml |
@@ -516,6 +526,8 @@ Examples:
| user-sensitivity-level-PASS.yaml |
| user-type-FAIL.yaml |
| user-type-PASS.yaml |
+ | validation-reference-has-correct-format-FAIL.yaml |
+ | validation-reference-has-correct-format-PASS.yaml |
#END_DYNAMIC_TEST_CASES
@style-guide
diff --git a/src/content/rev5/examples/ssp/xml/fedramp-ssp-example.oscal.xml b/src/content/rev5/examples/ssp/xml/fedramp-ssp-example.oscal.xml
index 366139e44..e03e7efc5 100644
--- a/src/content/rev5/examples/ssp/xml/fedramp-ssp-example.oscal.xml
+++ b/src/content/rev5/examples/ssp/xml/fedramp-ssp-example.oscal.xml
@@ -1712,8 +1712,8 @@ compliance (e.g., Module in Process).
-
-
+
+
@@ -1731,8 +1731,8 @@ compliance (e.g., Module in Process).
-
-
+
+
diff --git a/src/validations/constraints/content/ssp-component-has-proof-of-compliance-link-INVALID.xml b/src/validations/constraints/content/ssp-component-has-proof-of-compliance-link-INVALID.xml
new file mode 100644
index 000000000..0ad99cbd8
--- /dev/null
+++ b/src/validations/constraints/content/ssp-component-has-proof-of-compliance-link-INVALID.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/validations/constraints/content/ssp-component-has-valid-proof-of-compliance-link-INVALID.xml b/src/validations/constraints/content/ssp-component-has-valid-proof-of-compliance-link-INVALID.xml
new file mode 100644
index 000000000..92e76f3c8
--- /dev/null
+++ b/src/validations/constraints/content/ssp-component-has-valid-proof-of-compliance-link-INVALID.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/validations/constraints/content/ssp-component-has-validation-reference-INVALID.xml b/src/validations/constraints/content/ssp-component-has-validation-reference-INVALID.xml
new file mode 100644
index 000000000..c9f79c94b
--- /dev/null
+++ b/src/validations/constraints/content/ssp-component-has-validation-reference-INVALID.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/validations/constraints/content/ssp-validation-reference-has-correct-format-INVALID.xml b/src/validations/constraints/content/ssp-validation-reference-has-correct-format-INVALID.xml
new file mode 100644
index 000000000..7200ae3af
--- /dev/null
+++ b/src/validations/constraints/content/ssp-validation-reference-has-correct-format-INVALID.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/validations/constraints/fedramp-external-constraints.xml b/src/validations/constraints/fedramp-external-constraints.xml
index c4f534b5e..432caf1de 100644
--- a/src/validations/constraints/fedramp-external-constraints.xml
+++ b/src/validations/constraints/fedramp-external-constraints.xml
@@ -5,6 +5,32 @@
+
+
+
+
+ Component Has Proof of Compliance Link
+
+ In a FedRAMP SSP, a validation component MUST include a proof of compliance link.
+
+
+ Component Has Valid Proof of Compliance Link
+
+ In a FedRAMP SSP, a validation component MUST include a valid proof of compliance link.
+
+
+ Component Has Validation Reference
+
+ In a FedRAMP SSP, a validation component MUST include a validation reference.
+
+
+ Validation Reference Has Correct Format
+
+ In a FedRAMP SSP, a validation component MUST include a validation reference with the correct 4-digit format.
+
+
+
+
diff --git a/src/validations/constraints/unit-tests/component-has-proof-of-compliance-link-FAIL.yaml b/src/validations/constraints/unit-tests/component-has-proof-of-compliance-link-FAIL.yaml
new file mode 100644
index 000000000..d91593f2c
--- /dev/null
+++ b/src/validations/constraints/unit-tests/component-has-proof-of-compliance-link-FAIL.yaml
@@ -0,0 +1,9 @@
+test-case:
+ name: Negative Test for component-has-proof-of-compliance-link
+ description: >-
+ This test case validates the behavior of constraint
+ component-has-proof-of-compliance-link
+ content: ../content/ssp-component-has-proof-of-compliance-link-INVALID.xml
+ expectations:
+ - constraint-id: component-has-proof-of-compliance-link
+ result: fail
diff --git a/src/validations/constraints/unit-tests/component-has-proof-of-compliance-link-PASS.yaml b/src/validations/constraints/unit-tests/component-has-proof-of-compliance-link-PASS.yaml
new file mode 100644
index 000000000..c089f5611
--- /dev/null
+++ b/src/validations/constraints/unit-tests/component-has-proof-of-compliance-link-PASS.yaml
@@ -0,0 +1,9 @@
+test-case:
+ name: Positive Test for component-has-proof-of-compliance-link
+ description: >-
+ This test case validates the behavior of constraint
+ component-has-proof-of-compliance-link
+ content: ../../../content/rev5/examples/ssp/xml/fedramp-ssp-example.oscal.xml
+ expectations:
+ - constraint-id: component-has-proof-of-compliance-link
+ result: pass
diff --git a/src/validations/constraints/unit-tests/component-has-valid-proof-of-compliance-link-FAIL.yaml b/src/validations/constraints/unit-tests/component-has-valid-proof-of-compliance-link-FAIL.yaml
new file mode 100644
index 000000000..bffaa790a
--- /dev/null
+++ b/src/validations/constraints/unit-tests/component-has-valid-proof-of-compliance-link-FAIL.yaml
@@ -0,0 +1,9 @@
+test-case:
+ name: Negative Test for component-has-valid-proof-of-compliance-link
+ description: >-
+ This test case validates the behavior of constraint
+ component-has-valid-proof-of-compliance-link
+ content: ../content/ssp-component-has-valid-proof-of-compliance-link-INVALID.xml
+ expectations:
+ - constraint-id: component-has-valid-proof-of-compliance-link
+ result: fail
diff --git a/src/validations/constraints/unit-tests/component-has-valid-proof-of-compliance-link-PASS.yaml b/src/validations/constraints/unit-tests/component-has-valid-proof-of-compliance-link-PASS.yaml
new file mode 100644
index 000000000..2f18bc64f
--- /dev/null
+++ b/src/validations/constraints/unit-tests/component-has-valid-proof-of-compliance-link-PASS.yaml
@@ -0,0 +1,9 @@
+test-case:
+ name: Positive Test for component-has-valid-proof-of-compliance-link
+ description: >-
+ This test case validates the behavior of constraint
+ component-has-valid-proof-of-compliance-link
+ content: ../../../content/rev5/examples/ssp/xml/fedramp-ssp-example.oscal.xml
+ expectations:
+ - constraint-id: component-has-valid-proof-of-compliance-link
+ result: pass
diff --git a/src/validations/constraints/unit-tests/component-has-validation-reference-FAIL.yaml b/src/validations/constraints/unit-tests/component-has-validation-reference-FAIL.yaml
new file mode 100644
index 000000000..6cfebf2da
--- /dev/null
+++ b/src/validations/constraints/unit-tests/component-has-validation-reference-FAIL.yaml
@@ -0,0 +1,9 @@
+test-case:
+ name: Negative Test for component-has-validation-reference
+ description: >-
+ This test case validates the behavior of constraint
+ component-has-validation-reference
+ content: ../content/ssp-component-has-validation-reference-INVALID.xml
+ expectations:
+ - constraint-id: component-has-validation-reference
+ result: fail
diff --git a/src/validations/constraints/unit-tests/component-has-validation-reference-PASS.yaml b/src/validations/constraints/unit-tests/component-has-validation-reference-PASS.yaml
new file mode 100644
index 000000000..16176ce65
--- /dev/null
+++ b/src/validations/constraints/unit-tests/component-has-validation-reference-PASS.yaml
@@ -0,0 +1,9 @@
+test-case:
+ name: Positive Test for component-has-validation-reference
+ description: >-
+ This test case validates the behavior of constraint
+ component-has-validation-reference
+ content: ../../../content/rev5/examples/ssp/xml/fedramp-ssp-example.oscal.xml
+ expectations:
+ - constraint-id: component-has-validation-reference
+ result: pass
diff --git a/src/validations/constraints/unit-tests/validation-reference-has-correct-format-FAIL.yaml b/src/validations/constraints/unit-tests/validation-reference-has-correct-format-FAIL.yaml
new file mode 100644
index 000000000..10c685575
--- /dev/null
+++ b/src/validations/constraints/unit-tests/validation-reference-has-correct-format-FAIL.yaml
@@ -0,0 +1,9 @@
+test-case:
+ name: Negative Test for validation-reference-has-correct-format
+ description: >-
+ This test case validates the behavior of constraint
+ validation-reference-has-correct-format
+ content: ../content/ssp-validation-reference-has-correct-format-INVALID.xml
+ expectations:
+ - constraint-id: validation-reference-has-correct-format
+ result: fail
diff --git a/src/validations/constraints/unit-tests/validation-reference-has-correct-format-PASS.yaml b/src/validations/constraints/unit-tests/validation-reference-has-correct-format-PASS.yaml
new file mode 100644
index 000000000..102bebecd
--- /dev/null
+++ b/src/validations/constraints/unit-tests/validation-reference-has-correct-format-PASS.yaml
@@ -0,0 +1,9 @@
+test-case:
+ name: Positive Test for validation-reference-has-correct-format
+ description: >-
+ This test case validates the behavior of constraint
+ validation-reference-has-correct-format
+ content: ../../../content/rev5/examples/ssp/xml/fedramp-ssp-example.oscal.xml
+ expectations:
+ - constraint-id: validation-reference-has-correct-format
+ result: pass