diff --git a/app/views/includes/_side-nav.njk b/app/views/includes/_side-nav.njk index 18c3b0800..066e978ee 100644 --- a/app/views/includes/_side-nav.njk +++ b/app/views/includes/_side-nav.njk @@ -32,20 +32,63 @@ ] %} {% set dsSAFRequirementsS = [ - { title: "S01", url: "/solution-architecture-framework/s/s01" }, - { title: "S02", url: "/solution-architecture-framework/s/s02" }, - { title: "S03", url: "/solution-architecture-framework/s/s03" }, - { title: "S04", url: "/solution-architecture-framework/s/s04" } + { title: "S01 - Executive Alignment", url: "/solution-architecture-framework/requirements/s/s01" }, + { title: "S02 - Capability Model", url: "/solution-architecture-framework/requirements/s/s02" }, + { title: "S03 - Product Vision and Roadmap", url: "/solution-architecture-framework/requirements/s/s03" }, + { title: "S04 - Meeting Needs", url: "/solution-architecture-framework/requirements/s/s04" } +] %} + +{% set dsSAFRequirementsDM = [ + { title: "DM01 - Debt", url: "/solution-architecture-framework/requirements/dm/dm01" }, + { title: "DM02 - External Controls", url: "/solution-architecture-framework/requirements/dm/dm02" }, + { title: "DM03 - Risk and Issues", url: "/solution-architecture-framework/requirements/dm/dm03" }, + { title: "DM04 - Stakeholder Involvement", url: "/solution-architecture-framework/requirements/dm/dm04" }, + { title: "DM05 - Governance Process", url: "/solution-architecture-framework/requirements/dm/dm05" }, + { title: "DM06 - Governance Approach", url: "/solution-architecture-framework/requirements/dm/dm06" }, + { title: "DM07 - Decision Records", url: "/solution-architecture-framework/requirements/dm/dm07" }, + { title: "DM08 - Decision Making", url: "/solution-architecture-framework/requirements/dm/dm08" } +] %} + +{% set dsSAFRequirementsSD = [ + { title: "SD01 - Design Methodology", url: "/solution-architecture-framework/requirements/sd/sd01" }, + { title: "SD02 - NHSE Principles", url: "/solution-architecture-framework/requirements/sd/sd02" }, + { title: "SD03 - Standards Compliance", url: "/solution-architecture-framework/requirements/sd/sd03" }, + { title: "SD04 - Good Practice", url: "/solution-architecture-framework/requirements/sd/sd04" }, + { title: "SD05 - Commodoties", url: "/solution-architecture-framework/requirements/sd/sd05" }, + { title: "SD06 - API First", url: "/solution-architecture-framework/requirements/sd/sd06" }, + { title: "SD07 - Equal Treatment", url: "/solution-architecture-framework/requirements/sd/sd07" }, + { title: "SD08 - Patterns", url: "/solution-architecture-framework/requirements/sd/sd08" }, + { title: "SD09 - Standards Selection", url: "/solution-architecture-framework/requirements/sd/sd09" }, + { title: "SD10 - API Lifecycle", url: "/solution-architecture-framework/requirements/sd/sd10" }, + { title: "SD11 - Policy Adherence", url: "/solution-architecture-framework/requirements/sd/sd11" }, + { title: "SD12 - Well Architected Framework", url: "/solution-architecture-framework/requirements/sd/sd12" } +] %} + +{% set dsSAFRequirementsT = [ + { title: "T01 - Tech Radar", url: "/solution-architecture-framework/requirements/t/t01" }, + { title: "T02 - Appropriate Tech", url: "/solution-architecture-framework/requirements/t/t02" }, + { title: "T03 - Vendor Lock-in", url: "/solution-architecture-framework/requirements/t/t03" } ] %} {% set dsSAFRequirementsNF = [ - { title: "NF01", url: "/solution-architecture-framework/nf/nf01" }, - { title: "NF02", url: "/solution-architecture-framework/nf/nf02" }, - { title: "NF03", url: "/solution-architecture-framework/nf/nf03" }, - { title: "NF04", url: "/solution-architecture-framework/nf/nf04" }, - { title: "NF05", url: "/solution-architecture-framework/nf/nf05" }, - { title: "NF06", url: "/solution-architecture-framework/nf/nf06" } - + { title: "NF01 - Observability", url: "/solution-architecture-framework/requirements/nf/nf01" }, + { title: "NF02 - Reliability & Resilience", url: "/solution-architecture-framework/requirements/nf/nf02" }, + { title: "NF03 - Volume & Performance Model", url: "/solution-architecture-framework/requirements/nf/nf03" }, + { title: "NF04 - Sustainability Measures", url: "/solution-architecture-framework/requirements/nf/nf04" }, + { title: "NF05 - Audit & Logging", url: "/solution-architecture-framework/requirements/nf/nf05" }, + { title: "NF06 - Disaster Recovery & Business Continuity", url: "/solution-architecture-framework/requirements/nf/nf06" } +] %} + +{% set dsSAFRequirementsRU = [ + { title: "RU01 - Appropriateness", url: "/solution-architecture-framework/requirements/ru/ru01" }, + { title: "RU02 - Identification", url: "/solution-architecture-framework/requirements/ru/ru02" }, + { title: "RU03 - Required Reuse", url: "/solution-architecture-framework/requirements/ru/ru03" } +] %} + +{% set dsSAFRequirementsD = [ + { title: "D01 - Document Storage", url: "/solution-architecture-framework/requirements/d/d01" }, + { title: "D02 - Open Publication", url: "/solution-architecture-framework/requirements/d/d02" }, + { title: "D03 - Document Scope", url: "/solution-architecture-framework/requirements/d/d03" } ] %} {% set dsInformation = [ @@ -114,24 +157,83 @@ {% endfor %} +{% endif %} - {% endif %} +{%- if subSection == "Solution Architecture Framework - Requirements - Strategic Alignment, Vision, and Roadmap" %} +

Solution Architecture Framework

+ +{% endif %} + +{%- if subSection == "Solution Architecture Framework - Requirements - Decision Making & Governance" %} +

Solution Architecture Framework

+ +{% endif %} + +{%- if subSection == "Solution Architecture Framework - Requirements - Solution Design & Methods" %} +

Solution Architecture Framework

+ +{% endif %} + +{%- if subSection == "Solution Architecture Framework - Requirements - Technology Choices" %} +

Solution Architecture Framework

+ +{% endif %} -{%- if subSection == "SAF - Detailed - NF" %} +{%- if subSection == "Solution Architecture Framework - Requirements - Non-Functional Profile" %}

Solution Architecture Framework

+ +{% endif %} + +{%- if subSection == "Solution Architecture Framework - Requirements - Reuse Principles and Development of Shared Services" %} +

Solution Architecture Framework

+ +{% endif %} - {% endif %} +{%- if subSection == "Solution Architecture Framework - Requirements - Documentation" %} +

Solution Architecture Framework

+ +{% endif %} diff --git a/app/views/solution-architecture-framework/nf/nf06.njk b/app/views/solution-architecture-framework/nf/nf06.njk deleted file mode 100644 index 356856c6b..000000000 --- a/app/views/solution-architecture-framework/nf/nf06.njk +++ /dev/null @@ -1,28 +0,0 @@ -{% set pageTitle = "NF06 - Disaster Recovery & Business Continuity" %} -{% set pageSection = "Standards and technology" %} -{% set subSection = "SAF - Detailed - NF" %} -{% set pageDescription = "There should be clear requirements (commensurate with service levels) around DR & BC (and a pragmatic approach taken with regards DR/BC events planned for). Continuity plans and supporting documentation should reflect the requirements, technical & architecture constraints etc." %} -{% set beta = true %} -{% set hideContact = "false" %} -{% set dateUpdated = "07 August 2026 (SAF Version 1.1)" %} - -{% extends "includes/app-layout.njk" %} - -{% block breadcrumb %} - {% include "solution-architecture-framework/_breadcrumb.njk" %} -{% endblock %} - -{% block bodyContent %} - - - -

There should be clear requirements (commensurate with service levels) around DR & BC (and a pragmatic approach taken with regards DR/BC events planned for).

- -

Continuity plans and supporting documentation should reflect the requirements, technical & architecture constraints etc.

- -

This is an extra line.

- -

- - -{% endblock %} diff --git a/app/views/solution-architecture-framework/requirements.njk b/app/views/solution-architecture-framework/requirements.njk index 72b117d5a..632b8fbc8 100644 --- a/app/views/solution-architecture-framework/requirements.njk +++ b/app/views/solution-architecture-framework/requirements.njk @@ -256,23 +256,23 @@ - NF01 + NF01 Solutions should incorporate workload observability and understand service health. - NF02 + NF02 Reliability & Resilience needs should be defined (in terms of standard NHS England service levels) and solution mechanisms to meet these needs are defined including metrics such as Recovery Time Objective (RTO) and Recovery Point Objective (RPO). - NF03 + NF03 An overall volume and performance model should exist and includes business-realistic exceptional scenarios. - NF04 + NF04 Methods to measure sustainability to establish baseline and show improvement should be defined. - NF05 + NF05

Audit & logging requirements should be defined, and the solution can support them.

NCSC Logging and Protective Monitoring

@@ -280,7 +280,7 @@ - NF06 + NF06

Disaster Recovery & Business Continuity

There should be clear requirements (commensurate with service levels) around DR & BC (and a pragmatic approach taken with regards DR/BC events planned for).

diff --git a/app/views/solution-architecture-framework/requirements/d/d01.njk b/app/views/solution-architecture-framework/requirements/d/d01.njk new file mode 100644 index 000000000..6458e55c8 --- /dev/null +++ b/app/views/solution-architecture-framework/requirements/d/d01.njk @@ -0,0 +1,20 @@ +{% set pageTitle = "D01 - Document Storage" %} +{% set pageSection = "Standards and technology" %} +{% set subSection = "Solution Architecture Framework - Requirements - Documentation" %} +{% set pageDescription = "" %} +{% set beta = true %} +{% set hideContact = "false" %} +{% set dateUpdated = "07 August 2026 (SAF Version 1.1)" %} + +{% extends "includes/app-layout.njk" %} + +{% block breadcrumb %} + {% include "solution-architecture-framework/_breadcrumb.njk" %} +{% endblock %} + +{% block bodyContent %} + + + + +{% endblock %} diff --git a/app/views/solution-architecture-framework/requirements/d/d02.njk b/app/views/solution-architecture-framework/requirements/d/d02.njk new file mode 100644 index 000000000..2fb387678 --- /dev/null +++ b/app/views/solution-architecture-framework/requirements/d/d02.njk @@ -0,0 +1,20 @@ +{% set pageTitle = "D02 - Open Publication" %} +{% set pageSection = "Standards and technology" %} +{% set subSection = "Solution Architecture Framework - Requirements - Documentation" %} +{% set pageDescription = "" %} +{% set beta = true %} +{% set hideContact = "false" %} +{% set dateUpdated = "07 August 2026 (SAF Version 1.1)" %} + +{% extends "includes/app-layout.njk" %} + +{% block breadcrumb %} + {% include "solution-architecture-framework/_breadcrumb.njk" %} +{% endblock %} + +{% block bodyContent %} + + + + +{% endblock %} diff --git a/app/views/solution-architecture-framework/requirements/d/d03.njk b/app/views/solution-architecture-framework/requirements/d/d03.njk new file mode 100644 index 000000000..04db6db82 --- /dev/null +++ b/app/views/solution-architecture-framework/requirements/d/d03.njk @@ -0,0 +1,20 @@ +{% set pageTitle = "D03 - Document Scope" %} +{% set pageSection = "Standards and technology" %} +{% set subSection = "Solution Architecture Framework - Requirements - Documentation" %} +{% set pageDescription = "" %} +{% set beta = true %} +{% set hideContact = "false" %} +{% set dateUpdated = "07 August 2026 (SAF Version 1.1)" %} + +{% extends "includes/app-layout.njk" %} + +{% block breadcrumb %} + {% include "solution-architecture-framework/_breadcrumb.njk" %} +{% endblock %} + +{% block bodyContent %} + + + + +{% endblock %} diff --git a/app/views/solution-architecture-framework/requirements/dm/dm01.njk b/app/views/solution-architecture-framework/requirements/dm/dm01.njk new file mode 100644 index 000000000..1fd94a7c4 --- /dev/null +++ b/app/views/solution-architecture-framework/requirements/dm/dm01.njk @@ -0,0 +1,20 @@ +{% set pageTitle = "DM01 - Debt" %} +{% set pageSection = "Standards and technology" %} +{% set subSection = "Solution Architecture Framework - Requirements - Decision Making & Governance" %} +{% set pageDescription = "" %} +{% set beta = true %} +{% set hideContact = "false" %} +{% set dateUpdated = "07 August 2026 (SAF Version 1.1)" %} + +{% extends "includes/app-layout.njk" %} + +{% block breadcrumb %} + {% include "solution-architecture-framework/_breadcrumb.njk" %} +{% endblock %} + +{% block bodyContent %} + + + + +{% endblock %} diff --git a/app/views/solution-architecture-framework/requirements/dm/dm02.njk b/app/views/solution-architecture-framework/requirements/dm/dm02.njk new file mode 100644 index 000000000..e3da52f82 --- /dev/null +++ b/app/views/solution-architecture-framework/requirements/dm/dm02.njk @@ -0,0 +1,20 @@ +{% set pageTitle = "DM02 - External Controls" %} +{% set pageSection = "Standards and technology" %} +{% set subSection = "Solution Architecture Framework - Requirements - Decision Making & Governance" %} +{% set pageDescription = "" %} +{% set beta = true %} +{% set hideContact = "false" %} +{% set dateUpdated = "07 August 2026 (SAF Version 1.1)" %} + +{% extends "includes/app-layout.njk" %} + +{% block breadcrumb %} + {% include "solution-architecture-framework/_breadcrumb.njk" %} +{% endblock %} + +{% block bodyContent %} + + + + +{% endblock %} diff --git a/app/views/solution-architecture-framework/requirements/dm/dm03.njk b/app/views/solution-architecture-framework/requirements/dm/dm03.njk new file mode 100644 index 000000000..ab3d5ac0a --- /dev/null +++ b/app/views/solution-architecture-framework/requirements/dm/dm03.njk @@ -0,0 +1,20 @@ +{% set pageTitle = "DM03 - Risk and Issues" %} +{% set pageSection = "Standards and technology" %} +{% set subSection = "Solution Architecture Framework - Requirements - Decision Making & Governance" %} +{% set pageDescription = "" %} +{% set beta = true %} +{% set hideContact = "false" %} +{% set dateUpdated = "07 August 2026 (SAF Version 1.1)" %} + +{% extends "includes/app-layout.njk" %} + +{% block breadcrumb %} + {% include "solution-architecture-framework/_breadcrumb.njk" %} +{% endblock %} + +{% block bodyContent %} + + + + +{% endblock %} diff --git a/app/views/solution-architecture-framework/requirements/dm/dm04.njk b/app/views/solution-architecture-framework/requirements/dm/dm04.njk new file mode 100644 index 000000000..afd98123c --- /dev/null +++ b/app/views/solution-architecture-framework/requirements/dm/dm04.njk @@ -0,0 +1,20 @@ +{% set pageTitle = "DM04 - Stakeholder Involvement" %} +{% set pageSection = "Standards and technology" %} +{% set subSection = "Solution Architecture Framework - Requirements - Decision Making & Governance" %} +{% set pageDescription = "" %} +{% set beta = true %} +{% set hideContact = "false" %} +{% set dateUpdated = "07 August 2026 (SAF Version 1.1)" %} + +{% extends "includes/app-layout.njk" %} + +{% block breadcrumb %} + {% include "solution-architecture-framework/_breadcrumb.njk" %} +{% endblock %} + +{% block bodyContent %} + + + + +{% endblock %} diff --git a/app/views/solution-architecture-framework/requirements/dm/dm05.njk b/app/views/solution-architecture-framework/requirements/dm/dm05.njk new file mode 100644 index 000000000..ce8fa7408 --- /dev/null +++ b/app/views/solution-architecture-framework/requirements/dm/dm05.njk @@ -0,0 +1,20 @@ +{% set pageTitle = "DM05 - Governance Process" %} +{% set pageSection = "Standards and technology" %} +{% set subSection = "Solution Architecture Framework - Requirements - Decision Making & Governance" %} +{% set pageDescription = "" %} +{% set beta = true %} +{% set hideContact = "false" %} +{% set dateUpdated = "07 August 2026 (SAF Version 1.1)" %} + +{% extends "includes/app-layout.njk" %} + +{% block breadcrumb %} + {% include "solution-architecture-framework/_breadcrumb.njk" %} +{% endblock %} + +{% block bodyContent %} + + + + +{% endblock %} diff --git a/app/views/solution-architecture-framework/requirements/dm/dm06.njk b/app/views/solution-architecture-framework/requirements/dm/dm06.njk new file mode 100644 index 000000000..41f66b5fc --- /dev/null +++ b/app/views/solution-architecture-framework/requirements/dm/dm06.njk @@ -0,0 +1,20 @@ +{% set pageTitle = "DM06 - Governance Approach" %} +{% set pageSection = "Standards and technology" %} +{% set subSection = "Solution Architecture Framework - Requirements - Decision Making & Governance" %} +{% set pageDescription = "" %} +{% set beta = true %} +{% set hideContact = "false" %} +{% set dateUpdated = "07 August 2026 (SAF Version 1.1)" %} + +{% extends "includes/app-layout.njk" %} + +{% block breadcrumb %} + {% include "solution-architecture-framework/_breadcrumb.njk" %} +{% endblock %} + +{% block bodyContent %} + + + + +{% endblock %} diff --git a/app/views/solution-architecture-framework/requirements/dm/dm07.njk b/app/views/solution-architecture-framework/requirements/dm/dm07.njk new file mode 100644 index 000000000..5191075ad --- /dev/null +++ b/app/views/solution-architecture-framework/requirements/dm/dm07.njk @@ -0,0 +1,20 @@ +{% set pageTitle = "DM07 - Decision Records" %} +{% set pageSection = "Standards and technology" %} +{% set subSection = "Solution Architecture Framework - Requirements - Decision Making & Governance" %} +{% set pageDescription = "" %} +{% set beta = true %} +{% set hideContact = "false" %} +{% set dateUpdated = "07 August 2026 (SAF Version 1.1)" %} + +{% extends "includes/app-layout.njk" %} + +{% block breadcrumb %} + {% include "solution-architecture-framework/_breadcrumb.njk" %} +{% endblock %} + +{% block bodyContent %} + + + + +{% endblock %} diff --git a/app/views/solution-architecture-framework/requirements/dm/dm08.njk b/app/views/solution-architecture-framework/requirements/dm/dm08.njk new file mode 100644 index 000000000..562d5078d --- /dev/null +++ b/app/views/solution-architecture-framework/requirements/dm/dm08.njk @@ -0,0 +1,20 @@ +{% set pageTitle = "DM08 - Decision Making" %} +{% set pageSection = "Standards and technology" %} +{% set subSection = "Solution Architecture Framework - Requirements - Decision Making & Governance" %} +{% set pageDescription = "" %} +{% set beta = true %} +{% set hideContact = "false" %} +{% set dateUpdated = "07 August 2026 (SAF Version 1.1)" %} + +{% extends "includes/app-layout.njk" %} + +{% block breadcrumb %} + {% include "solution-architecture-framework/_breadcrumb.njk" %} +{% endblock %} + +{% block bodyContent %} + + + + +{% endblock %} diff --git a/app/views/solution-architecture-framework/requirements/nf/nf01.njk b/app/views/solution-architecture-framework/requirements/nf/nf01.njk new file mode 100644 index 000000000..000c26602 --- /dev/null +++ b/app/views/solution-architecture-framework/requirements/nf/nf01.njk @@ -0,0 +1,158 @@ +{% set pageTitle = "NF01 - Observability" %} +{% set pageSection = "Standards and technology" %} +{% set subSection = "Solution Architecture Framework - Requirements - Non-Functional Profile" %} +{% set pageDescription = "" %} +{% set beta = true %} +{% set hideContact = "false" %} +{% set dateUpdated = "07 August 2026 (SAF Version 1.1)" %} + +{% extends "includes/app-layout.njk" %} + +{% block breadcrumb %} + {% include "solution-architecture-framework/_breadcrumb.njk" %} +{% endblock %} + +{% block bodyContent %} + +

Requirement

+ +
+

NF01 Solutions should incorporate workload observability and understand service health.

+
+ +
+ +

Requirement description

+ +

+This requirement is about ensuring that the solution can be monitored effectively and that teams understand how the service is performing. +

+ +

+The solution should provide sufficient observability to understand service health, identify issues, investigate incidents and support operational decision-making. Observability should cover the workload being delivered, rather than relying solely on infrastructure metrics. +

+ +

+In simple terms:
+Teams should be able to see what the service is doing, understand whether it is healthy, and quickly identify and investigate problems. +

+ +

Scoring rubric table – NF01 Workload Observability & Service Health

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ScoreWhat it looks likeTypical evidenceKey gaps / risks
0No evidence that workload observability exists. Service health is not measured or understood.No monitoring tools, dashboards, health metrics, telemetry or alerting.Significant risk that service failures, performance degradation or outages will not be detected promptly.
1Limited evidence of monitoring. Monitoring is largely focused on infrastructure or ad-hoc checks.Basic infrastructure monitoring, manual operational checks, supplier assurances without supporting evidence.High-risk gaps. Limited visibility of user experience, application behaviour or operational performance.
2Some elements of observability are implemented. Monitoring exists for parts of the solution but coverage is incomplete.Application logs, basic dashboards, limited alerting, selected service health indicators or partial telemetry.Significant notable gaps in monitoring coverage, alerting quality, ownership or operational processes.
3Much of the requirement is met. Key workload and service health indicators are monitored and operational teams can investigate most incidents.Application monitoring, dashboards, health checks, structured alerting, logging platforms, operational runbooks and incident investigation evidence.Notable gaps remain in end-to-end visibility, dependency monitoring, business-level metrics or operational maturity. Mitigating actions are required.
4Most of the requirement is met with good levels of evidence. Service health is actively monitored through defined indicators with clear operational ownership.Maintained dashboards, service-level indicators (SLIs), alert thresholds, operational reviews, monitoring standards, trend reporting and ownership documentation.Minor gaps only. Remaining risks are documented, understood and actively managed.
5Comprehensive evidence that observability is mature, proactive and embedded within operational management. Monitoring capability exceeds normal expectations.End-to-end observability strategy, workload telemetry, proactive alerting, business and technical health indicators, post-incident learning, trend analysis and continuous improvement activities.Minimal gaps. Monitoring capability is routinely reviewed and drives service and architectural improvements.
+ +

What assessors should look for

+ +
    +
  1. + Service health monitoring
    + Evidence that service availability, reliability and operational health can be measured and understood. +
  2. + +
  3. + Workload observability
    + Evidence that application behaviour, transactions and workloads can be observed and analysed. +
  4. + +
  5. + Alerting and incident support
    + Monitoring should help identify, diagnose and resolve incidents efficiently. +
  6. + +
  7. + Operational ownership
    + Clear ownership of monitoring, dashboards, alerts and supporting processes. +
  8. + +
  9. + Dependency coverage
    + Critical integrations, external services and supporting platforms are monitored where appropriate. +
  10. + +
  11. + Use of monitoring data
    + Evidence that telemetry and monitoring outputs are used to support operational decisions and service improvements. +
  12. +
+ +

What separates a 3 from a 4 or 5

+ +

+A score of 3 generally means the service is observable and operational teams can investigate issues, but there are notable gaps in coverage, ownership, dependency monitoring or monitoring maturity. +

+ +

+A score of 4 requires evidence that monitoring is actively maintained, governed and regularly reviewed. Service health indicators are defined, ownership is clear and observability is embedded in operational processes. +

+ +

+A score of 5 requires evidence that observability is used proactively rather than reactively. Monitoring informs operational improvement, incident reduction, capacity planning and architectural decision-making. Coverage is comprehensive across technical, operational and business perspectives. +

+ + +

+Suggested examples of evidence (not SAF-mandated artefacts): +

+ + + + +{% endblock %} diff --git a/app/views/solution-architecture-framework/requirements/nf/nf02.njk b/app/views/solution-architecture-framework/requirements/nf/nf02.njk new file mode 100644 index 000000000..4fba88119 --- /dev/null +++ b/app/views/solution-architecture-framework/requirements/nf/nf02.njk @@ -0,0 +1,161 @@ +{% set pageTitle = "NF02 - Reliability & Resilience" %} +{% set pageSection = "Standards and technology" %} +{% set subSection = "Solution Architecture Framework - Requirements - Non-Functional Profile" %} +{% set pageDescription = "" %} +{% set beta = true %} +{% set hideContact = "false" %} +{% set dateUpdated = "07 August 2026 (SAF Version 1.1)" %} + +{% extends "includes/app-layout.njk" %} + +{% block breadcrumb %} + {% include "solution-architecture-framework/_breadcrumb.njk" %} +{% endblock %} + +{% block bodyContent %} + +

Requirement

+ +
+

+NF02 Reliability & Resilience needs should be defined (in terms of standard NHS England service levels) and solution mechanisms to meet these needs are defined including metrics such as Recovery Time Objective (RTO) and Recovery Point Objective (RPO). +

+
+ +

Requirement description

+ +

+This requirement is about ensuring that reliability and resilience expectations are understood, +documented and reflected in the solution design. +

+ +

+The service should have clearly defined availability, recovery and resilience requirements. +The architecture should include mechanisms that enable those requirements to be met. This includes +documented recovery objectives such as RTO and RPO where applicable. +

+ +

+In simple terms:
+The team understands how reliable the service needs to be and can demonstrate how the architecture delivers those reliability and resilience requirements. +

+ +

Scoring rubric table – NF02 Reliability & Resilience

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ScoreWhat it looks likeTypical evidenceKey gaps / risks
0No evidence that reliability or resilience requirements have been defined. The architecture does not demonstrate how service continuity will be maintained.No service level requirements, resilience requirements, recovery objectives, architecture evidence or operational documentation.Significant service risk. Service reliability expectations are unknown and recovery capability cannot be assessed.
1Limited evidence that reliability and resilience have been considered. Requirements are informal, assumed or inconsistently documented.Informal discussions, supplier statements, draft documents or undocumented assumptions regarding availability and recovery.High-risk gaps. Recovery expectations, availability targets and resilience mechanisms are unclear or unverified.
2Some reliability and resilience requirements have been defined. Elements of the architecture support resilience objectives, but significant gaps remain.Partial non-functional requirements, draft service levels, limited RTO/RPO definitions, documented backup or failover arrangements.Significant notable gaps in requirements coverage, architecture alignment, operational readiness or validation.
3Much of the requirement is met. Reliability and resilience requirements are documented and the architecture contains mechanisms intended to meet them.Approved non-functional requirements, documented service levels, recovery objectives, resilience patterns, architecture diagrams, risk assessments and operational procedures.Notable gaps remain in coverage, testing, dependency management, operational capability or evidence that objectives can be achieved. Mitigating action is required.
4Most of the requirement is met with good levels of evidence. Reliability and resilience requirements are maintained, understood, and reflected throughout the architecture and operating model.Approved and maintained non-functional requirements, documented service level targets, defined and reviewed RTO/RPO values, resilience architecture documentation, governance reviews and resilience testing evidence.Minor gaps only. Remaining risks are known, documented and actively managed.
5Comprehensive evidence that the requirement is met and exceeds expectations. Reliability and resilience are embedded throughout design, delivery and operations.Mature resilience strategy, architecture patterns aligned to service objectives, regular resilience testing, documented lessons learned, evidence of continual improvement, service-level reporting and governance oversight.Minimal gaps. Reliability objectives are demonstrably achieved and resilience capability is continually reviewed and improved.
+ +

What assessors should look for

+ +
    +
  1. + Defined service level requirements
    + Evidence that availability, reliability and recovery expectations have been formally documented. +
  2. + +
  3. + Recovery objectives
    + Evidence that RTO, RPO or equivalent recovery expectations have been defined and agreed. +
  4. + +
  5. + Architectural resilience mechanisms
    + Evidence that the design includes appropriate resilience measures such as redundancy, failover, replication or recovery processes. +
  6. + +
  7. + Alignment between requirements and design
    + Evidence that the architecture can realistically meet the stated service level objectives. +
  8. + +
  9. + Risk and dependency management
    + Evidence that resilience risks, single points of failure and critical dependencies have been identified and managed. +
  10. + +
  11. + Validation and testing
    + Evidence that resilience assumptions, recovery arrangements and service objectives have been tested or validated. +
  12. +
+ +

What separates a 3 from a 4 or 5

+ +

+A score of 3 usually means that reliability and resilience requirements have been defined and the architecture contains mechanisms intended to meet them, but there are notable gaps in testing, validation, dependency management or operational assurance. +

+ +

+A score of 4 requires evidence that requirements are actively maintained, reviewed and aligned to the architecture. Recovery objectives are understood, documented and supported by operational processes and governance. +

+ +

+A score of 5 requires evidence that resilience is treated as an ongoing capability rather than a design exercise. The organisation regularly validates resilience measures, learns from incidents and exercises, and continuously improves the architecture and operational processes. +

+ +

+Suggested examples of evidence (not SAF-mandated artefacts): +

+ + + + + +{% endblock %} diff --git a/app/views/solution-architecture-framework/requirements/nf/nf03.njk b/app/views/solution-architecture-framework/requirements/nf/nf03.njk new file mode 100644 index 000000000..ee76013c7 --- /dev/null +++ b/app/views/solution-architecture-framework/requirements/nf/nf03.njk @@ -0,0 +1,163 @@ +{% set pageTitle = "NF03 - Volume & Performance Model" %} +{% set pageSection = "Standards and technology" %} +{% set subSection = "Solution Architecture Framework - Requirements - Non-Functional Profile" %} +{% set pageDescription = "" %} +{% set beta = true %} +{% set hideContact = "false" %} +{% set dateUpdated = "07 August 2026 (SAF Version 1.1)" %} + +{% extends "includes/app-layout.njk" %} + +{% block breadcrumb %} + {% include "solution-architecture-framework/_breadcrumb.njk" %} +{% endblock %} + +{% block bodyContent %} + + +

Requirement

+ +
+

+NF03 An overall volume and performance model should exist and includes business-realistic exceptional scenarios. +

+
+ +

Requirement description

+ +

+This requirement is about understanding how much demand a solution must handle and whether +the architecture can meet expected performance levels under both normal and exceptional conditions. +

+ +

+A documented volume and performance model should describe expected users, transactions, +data volumes, growth assumptions and workload patterns. The model should also consider +realistic exceptional scenarios such as seasonal peaks, major operational events, +service incidents or unexpected demand spikes. +

+ +

+In simple terms:
+The team understands how much load the service must handle today and in the future, and has evidence that the solution can perform under realistic operating conditions. +

+ +

Scoring rubric table – NF03 Volume & Performance Modelling

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ScoreWhat it looks likeTypical evidenceKey gaps / risks
0No evidence that volume or performance requirements have been considered. Expected service demand is unknown.No volume model, performance requirements, sizing assumptions or capacity planning artefacts.Significant service risk. The solution may fail to meet user demand, suffer performance degradation or experience service outages under load.
1Limited evidence that volumes and performance have been considered. Assumptions are informal, undocumented or based on estimates without validation.Informal discussions, supplier estimates, undocumented assumptions or basic capacity figures.High-risk gaps. Demand assumptions may be inaccurate and performance risks are poorly understood.
2Some elements of a volume and performance model exist. Normal operating conditions may be documented but exceptional scenarios are incomplete or absent.Partial workload analysis, user estimates, basic performance requirements, limited capacity planning or historical usage data.Significant notable gaps in demand forecasting, growth assumptions, exceptional scenario modelling or architectural validation.
3Much of the requirement is met. A documented volume and performance model exists and includes key business scenarios.Performance requirements, transaction forecasts, growth projections, workload models, architecture design assumptions and evidence of performance testing.Notable gaps remain in scenario coverage, forecasting confidence, dependency analysis or validation against real-world usage patterns. Mitigating action is required.
4Most of the requirement is met with good levels of evidence. The model is maintained, reviewed and includes realistic exceptional scenarios and future growth assumptions.Approved performance model, capacity planning documentation, scenario analysis, performance test results, architecture reviews and documented assumptions.Minor gaps only. Remaining performance risks are understood, documented and actively managed.
5Comprehensive evidence that the requirement is met and exceeds expectations in several areas. Volume and performance modelling is actively used to inform architecture, operational planning and investment decisions.Mature forecasting models, capacity management processes, multiple exceptional scenario assessments, trend analysis, performance engineering practices, periodic review cycles and evidence of continuous improvement.Minimal gaps. Performance risks are proactively identified, monitored and addressed before affecting service delivery.
+ +

What assessors should look for

+ +
    +
  1. + Documented volume model
    + Evidence that expected user numbers, transactions, data volumes and workload patterns have been identified and documented. +
  2. + +
  3. + Performance requirements
    + Evidence that measurable performance expectations have been defined and agreed. +
  4. + +
  5. + Exceptional scenarios
    + Evidence that realistic peak loads, operational incidents, seasonal events or growth scenarios have been considered. +
  6. + +
  7. + Alignment to architecture
    + Evidence that the solution design can support the expected workload and performance requirements. +
  8. + +
  9. + Validation and testing
    + Evidence that modelling assumptions have been validated through testing, analysis or operational data. +
  10. + +
  11. + Future growth planning
    + Evidence that projected growth and changing demand patterns have been considered. +
  12. +
+ +

What separates a 3 from a 4 or 5

+ +

+A score of 3 generally means that a credible volume and performance model exists and supports most architectural decisions, but there are notable gaps in forecast quality, exceptional scenario coverage, testing evidence or maintenance. +

+ +

+A score of 4 requires evidence that the model is actively maintained, reviewed and used to support capacity planning and architecture decisions. Exceptional business scenarios should be explicitly considered and supported by evidence. +

+ +

+A score of 5 requires evidence that volume and performance modelling is embedded within delivery and operational processes. Forecasts are regularly reviewed, validated against operational data and used proactively to identify and mitigate future performance risks. +

+ +

+Suggested examples of evidence (not SAF-mandated artefacts): +

+ + + + + +{% endblock %} diff --git a/app/views/solution-architecture-framework/requirements/nf/nf04.njk b/app/views/solution-architecture-framework/requirements/nf/nf04.njk new file mode 100644 index 000000000..3f5f0f6fd --- /dev/null +++ b/app/views/solution-architecture-framework/requirements/nf/nf04.njk @@ -0,0 +1,156 @@ +{% set pageTitle = "NF04 - Sustainability Measures" %} +{% set pageSection = "Standards and technology" %} +{% set subSection = "Solution Architecture Framework - Requirements - Non-Functional Profile" %} +{% set pageDescription = "" %} +{% set beta = true %} +{% set hideContact = "false" %} +{% set dateUpdated = "07 August 2026 (SAF Version 1.1)" %} + +{% extends "includes/app-layout.njk" %} + +{% block breadcrumb %} + {% include "solution-architecture-framework/_breadcrumb.njk" %} +{% endblock %} + +{% block bodyContent %} + +

Requirement

+ +
+

NF04 Methods to measure sustainability to establish baseline and show improvement should be defined.

+
+ +

Requirement description

+ +

+This requirement is about understanding the environmental sustainability impact of a solution and ensuring that improvements can be measured over time. +

+ +

+The solution should have defined methods for measuring sustainability performance. A baseline should be established so that future improvements can be demonstrated. The approach should be proportionate to the nature of the service and aligned to organisational sustainability objectives where applicable. +

+ +

+In simple terms:
+The team understands how sustainable the solution is today and has a defined way to measure and demonstrate improvement over time. +

+ +

Scoring rubric table – NF04 Sustainability Measurement

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ScoreWhat it looks likeTypical evidenceKey gaps / risks
0No evidence that sustainability has been considered or measured.No sustainability objectives, measurements, baseline data or assessment artefacts.Significant risk that sustainability impacts are unknown and opportunities for improvement cannot be identified.
1Limited evidence that sustainability has been discussed, but no structured measurement approach exists.Informal discussions, undocumented assumptions or high-level statements regarding sustainability.High-risk gaps. No measurable baseline exists and improvement claims cannot be evidenced.
2Some elements of sustainability measurement have been identified, but the approach is incomplete or inconsistently applied.Partial assessments, limited metrics, supplier sustainability information or draft sustainability objectives.Significant notable gaps in measurement scope, baseline data, governance or ongoing monitoring.
3Much of the requirement is met. Sustainability measures have been identified and a baseline has been established for key areas.Sustainability assessments, documented baseline metrics, architectural decisions considering sustainability factors, and periodic reporting.Notable gaps remain in coverage, data quality, target setting or evidence of sustained improvement. Mitigating action is required.
4Most of the requirement is met with good levels of evidence. Sustainability metrics are maintained, reviewed and used to inform decision-making.Approved sustainability measures, maintained baselines, improvement targets, governance review records and periodic reporting against objectives.Minor gaps only. Remaining sustainability risks and assumptions are understood and actively managed.
5Comprehensive evidence that the requirement is met and exceeds expectations in several areas. Sustainability measurement is embedded within architecture, delivery and operational processes.Mature sustainability framework, established metrics and trends, continuous improvement initiatives, governance oversight and evidence that sustainability data influences strategic and architectural decisions.Minimal gaps. Sustainability performance is actively monitored, reported and improved.
+ +

What assessors should look for

+ +
    +
  1. + Defined measurement approach
    + Evidence that sustainability will be measured through agreed methods, metrics or assessment techniques. +
  2. + +
  3. + Established baseline
    + Evidence that current sustainability performance has been assessed and documented. +
  4. + +
  5. + Improvement tracking
    + Evidence that sustainability changes can be measured over time against the baseline. +
  6. + +
  7. + Governance and ownership
    + Evidence that sustainability measurements are reviewed and have clear ownership. +
  8. + +
  9. + Use in decision-making
    + Evidence that sustainability considerations influence architecture, technology or operational decisions. +
  10. + +
  11. + Ongoing maintenance
    + Evidence that metrics, assumptions and reporting are maintained and updated as the solution evolves. +
  12. +
+ +

What separates a 3 from a 4 or 5

+ +

+A score of 3 generally means that sustainability measurements exist and a baseline has been established, but there are notable gaps in governance, reporting, target setting or evidence of improvement. +

+ +

+A score of 4 requires evidence that sustainability metrics are maintained, reviewed and actively used when making architecture or operational decisions. Improvement activities should be measurable and supported by governance. +

+ +

+A score of 5 requires evidence that sustainability measurement is embedded within normal delivery and operational practices. Trends are monitored over time, improvements are demonstrable and sustainability data is routinely used to influence planning and decision-making. +

+ +

+Suggested examples of evidence (not SAF-mandated artefacts): +

+ + + + + +{% endblock %} diff --git a/app/views/solution-architecture-framework/requirements/nf/nf05.njk b/app/views/solution-architecture-framework/requirements/nf/nf05.njk new file mode 100644 index 000000000..053ebadfa --- /dev/null +++ b/app/views/solution-architecture-framework/requirements/nf/nf05.njk @@ -0,0 +1,160 @@ +{% set pageTitle = "NF05 - Audit & Logging" %} +{% set pageSection = "Standards and technology" %} +{% set subSection = "Solution Architecture Framework - Requirements - Non-Functional Profile" %} +{% set pageDescription = "" %} +{% set beta = true %} +{% set hideContact = "false" %} +{% set dateUpdated = "07 August 2026 (SAF Version 1.1)" %} + +{% extends "includes/app-layout.njk" %} + +{% block breadcrumb %} + {% include "solution-architecture-framework/_breadcrumb.njk" %} +{% endblock %} + +{% block bodyContent %} + +

Requirement

+ +
+

NF05 Audit & logging requirements should be defined, and the solution can support them.

+ +

NCSC Logging and Protective Monitoring

+

NCSC Principle 13: Audit information and alerting for customers

+
+ +

Requirement description

+ +

+This requirement is about ensuring that the solution generates, retains and makes available the audit and logging information needed to support operational management, security monitoring, incident investigation, compliance and governance activities. +

+ +

+The service should have clearly defined audit and logging requirements. The architecture should demonstrate how logs and audit records are generated, protected, retained, accessed and used. Logging arrangements should be proportionate to the sensitivity, criticality and risk profile of the service. +

+ +

+In simple terms:
+The organisation knows what needs to be logged, why it needs to be logged, and can demonstrate that the solution captures and manages audit information effectively. +

+ +

Scoring rubric table – NF05 Audit & Logging

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ScoreWhat it looks likeTypical evidenceKey gaps / risks
0No evidence that audit or logging requirements have been defined. The solution provides little or no ability to investigate operational or security events.No logging standards, audit requirements, monitoring design, retention policies or operational procedures.Significant service risk. Security incidents, operational failures and compliance issues may not be detectable or investigable.
1Limited evidence that audit and logging have been considered. Logging is inconsistent, incomplete or largely dependent on default platform capabilities.Informal requirements, limited system logs, undocumented assumptions, supplier assertions or isolated logging implementations.High-risk gaps. Important events may not be recorded and audit coverage is insufficient to support investigations.
2Some audit and logging requirements have been identified and partially implemented. Coverage exists for selected components but is incomplete.Partial logging standards, basic audit trails, limited retention policies, selected monitoring dashboards or security logging capabilities.Significant notable gaps in event coverage, retention arrangements, governance, access controls or operational use of logs.
3Much of the requirement is met with an acceptable level of evidence. Key audit and logging requirements are defined and implemented across most critical service components.Documented logging requirements, security and operational logs, audit trail specifications, retention policies, monitoring arrangements and incident investigation processes.Notable gaps remain in coverage, consistency, governance, retention management, log protection or integration with monitoring processes. Mitigating action is required.
4Most of the requirement is met with good levels of evidence. Audit and logging requirements are maintained, governed and aligned to operational and security needs.Approved logging standards, documented event catalogues, retention schedules, access controls, monitoring integration, governance reviews and evidence of regular use during operational and security activities.Minor gaps only. Remaining risks are known, documented and actively managed.
5Comprehensive evidence that the requirement is met and exceeds expectations in several areas. Audit and logging capabilities are mature, consistently applied and actively support operational improvement, security monitoring and compliance activities.Enterprise-aligned logging strategy, centralised logging, automated analysis, defined audit controls, continuous review processes, monitoring integration and evidence that audit data informs operational and security decision-making.Minimal gaps. Logging and audit capabilities are routinely reviewed, validated and continuously improved.
+ +

What assessors should look for

+ +
    + +
  1. + Defined audit requirements
    + Evidence that the organisation has identified which user, system, security and administrative activities require auditing. +
  2. + +
  3. + Defined logging requirements
    + Evidence that logging requirements are documented, understood and aligned to operational and security needs. +
  4. + +
  5. + Coverage across the solution
    + Evidence that critical applications, services, integrations and infrastructure components generate appropriate logs and audit records. +
  6. + +
  7. + Retention and protection
    + Evidence that logs are retained appropriately and protected against unauthorised access, modification or deletion. +
  8. + +
  9. + Operational and security use
    + Evidence that logging information is used to support monitoring, incident management, troubleshooting and security investigations. +
  10. + +
  11. + Governance and maintenance
    + Evidence that logging standards, requirements and controls are reviewed and maintained as the solution evolves. +
  12. + +
+ +

What separates a 3 from a 4 or 5

+ +

+A score of 3 generally means that audit and logging requirements have been documented and largely implemented, but there are notable weaknesses such as inconsistent coverage, gaps in retention arrangements, unclear ownership or limited evidence that logs are actively used. +

+ +

+A score of 4 requires evidence that logging and audit controls are governed, maintained and routinely used by operational and security teams. Coverage should be largely complete, with only minor gaps remaining. +

+ +

+A score of 5 requires evidence that audit and logging capabilities are embedded within operational practice. Logging data is actively analysed, supports continuous improvement and is consistently used to strengthen service reliability, security and compliance. +

+ +

+Suggested examples of evidence (not SAF-mandated artefacts): +

+ + + + +{% endblock %} diff --git a/app/views/solution-architecture-framework/requirements/nf/nf06.njk b/app/views/solution-architecture-framework/requirements/nf/nf06.njk new file mode 100644 index 000000000..d9fd68a39 --- /dev/null +++ b/app/views/solution-architecture-framework/requirements/nf/nf06.njk @@ -0,0 +1,163 @@ +{% set pageTitle = "NF06 - Disaster Recovery & Business Continuity" %} +{% set pageSection = "Standards and technology" %} +{% set subSection = "Solution Architecture Framework - Requirements - Non-Functional Profile" %} +{% set pageDescription = "" %} +{% set beta = true %} +{% set hideContact = "false" %} +{% set dateUpdated = "07 August 2026 (SAF Version 1.1)" %} + +{% extends "includes/app-layout.njk" %} + +{% block breadcrumb %} + {% include "solution-architecture-framework/_breadcrumb.njk" %} +{% endblock %} + +{% block bodyContent %} + +

Requirement

+ +
+

NF06 Disaster Recovery & Business Continuity. There should be clear requirements (commensurate with service levels) around DR & BC (and a pragmatic approach taken with regards DR/BC events planned for). Continuity plans and supporting documentation should reflect the requirements, technical & architecture constraints etc.

+
+ +

Requirement description

+ +

+This requirement is about ensuring the service can continue operating, or be recovered, +following a significant disruption. +

+ +

+The solution should have clearly defined Disaster Recovery (DR) and Business Continuity (BC) +requirements that are appropriate for the service criticality and agreed service levels. +Recovery arrangements should be documented, understood, achievable and aligned to the +actual architecture. +

+ +

+In simple terms:
+The organisation knows how the service will continue or recover during major incidents, and there is evidence that the plans are realistic and aligned to the solution design. +

+ +

Scoring rubric table – NF06 Disaster Recovery & Business Continuity

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ScoreWhat it looks likeTypical evidenceKey gaps / risks
0No evidence that DR or BC requirements have been defined. No documented recovery approach exists.No continuity plans, recovery procedures, architecture recovery documentation or ownership.Significant risk of prolonged outage, failure to recover critical services and unmanaged operational impact.
1Limited evidence that DR and BC have been considered. Recovery arrangements are largely informal or based on assumptions.Draft notes, informal discussions, supplier statements or undocumented recovery expectations.High-risk gaps. Recovery responsibilities, dependencies and recovery methods are unclear.
2Some elements of the DR and BC requirement are met. Recovery arrangements exist for parts of the solution but coverage is incomplete.Partial continuity plans, infrastructure recovery documentation, some dependency analysis or supplier commitments.Significant notable gaps in scope, testing, ownership, documentation or recovery coverage.
3Much of the requirement is met. Recovery requirements are documented and linked to the solution architecture. Key recovery processes have been identified.DR strategy, continuity plans, operational runbooks, dependency mapping, architecture documentation and evidence of limited testing or tabletop exercises.Notable gaps remain in coverage, validation, documentation currency or supplier recovery arrangements. Mitigating action is required.
4Most of the requirement is met with good levels of evidence. Recovery expectations, responsibilities and processes are documented, maintained and periodically reviewed.Approved DR and BC plans, recovery objectives, governance reviews, test reports, maintained recovery procedures and dependency analysis.Minor gaps only. Residual risks are documented, understood and actively managed.
5Comprehensive evidence that the requirement is met and exceeds expectations in several areas. DR and BC capability is mature, governed and continuously improved.Regular recovery exercises, defined improvement actions, operational playbooks, supplier assurance evidence, governance reporting and measurable recovery outcomes.Minimal gaps. Recovery capability is routinely validated and refined through lessons learned.
+ +

What assessors should look for

+ +
    +
  1. + Defined recovery requirements
    + Evidence that recovery expectations have been documented and are proportionate to service criticality. +
  2. + +
  3. + Documented continuity and recovery plans
    + Recovery procedures, continuity plans, escalation routes and supporting operational artefacts. +
  4. + +
  5. + Alignment to architecture
    + Evidence that DR and BC arrangements reflect the actual technical design, dependencies and constraints. +
  6. + +
  7. + Ownership and governance
    + Clear accountability for maintaining, reviewing and approving continuity arrangements. +
  8. + +
  9. + Testing and validation
    + Evidence that recovery plans have been exercised, tested or otherwise validated. +
  10. + +
  11. + Third-party and dependency coverage
    + Critical suppliers, shared services and integrations are included within recovery planning. +
  12. +
+ +

What separates a 3 from a 4 or 5

+ +

+A score of 3 normally indicates that documented recovery arrangements exist and +there is a credible recovery approach. However, there are still notable weaknesses such as +untested plans, incomplete dependency analysis, outdated documentation or gaps in service coverage. +

+ +

+A score of 4 requires evidence that plans are actively maintained, reviewed and tested, +and that recovery arrangements reflect the architecture and operating model. +

+ +

+A score of 5 requires evidence that Disaster Recovery and Business Continuity are embedded +within operational governance. Recovery exercises are performed regularly, lessons learned drive +improvements, supplier assurance is in place and there is strong evidence that recovery objectives +can be achieved under realistic scenarios. +

+ +

+Suggested evidence examples (not SAF-mandated artefacts): +

+ + +{% endblock %} diff --git a/app/views/solution-architecture-framework/requirements/ru/ru01.njk b/app/views/solution-architecture-framework/requirements/ru/ru01.njk new file mode 100644 index 000000000..c7664a888 --- /dev/null +++ b/app/views/solution-architecture-framework/requirements/ru/ru01.njk @@ -0,0 +1,20 @@ +{% set pageTitle = "RU01 - Appropriateness" %} +{% set pageSection = "Standards and technology" %} +{% set subSection = "Solution Architecture Framework - Requirements - Reuse Principles and Development of Shared Services" %} +{% set pageDescription = "" %} +{% set beta = true %} +{% set hideContact = "false" %} +{% set dateUpdated = "07 August 2026 (SAF Version 1.1)" %} + +{% extends "includes/app-layout.njk" %} + +{% block breadcrumb %} + {% include "solution-architecture-framework/_breadcrumb.njk" %} +{% endblock %} + +{% block bodyContent %} + + + + +{% endblock %} diff --git a/app/views/solution-architecture-framework/requirements/ru/ru02.njk b/app/views/solution-architecture-framework/requirements/ru/ru02.njk new file mode 100644 index 000000000..45a5e05ac --- /dev/null +++ b/app/views/solution-architecture-framework/requirements/ru/ru02.njk @@ -0,0 +1,20 @@ +{% set pageTitle = "RU02 - Identification" %} +{% set pageSection = "Standards and technology" %} +{% set subSection = "Solution Architecture Framework - Requirements - Reuse Principles and Development of Shared Services" %} +{% set pageDescription = "" %} +{% set beta = true %} +{% set hideContact = "false" %} +{% set dateUpdated = "07 August 2026 (SAF Version 1.1)" %} + +{% extends "includes/app-layout.njk" %} + +{% block breadcrumb %} + {% include "solution-architecture-framework/_breadcrumb.njk" %} +{% endblock %} + +{% block bodyContent %} + + + + +{% endblock %} diff --git a/app/views/solution-architecture-framework/requirements/ru/ru03.njk b/app/views/solution-architecture-framework/requirements/ru/ru03.njk new file mode 100644 index 000000000..30db9b17e --- /dev/null +++ b/app/views/solution-architecture-framework/requirements/ru/ru03.njk @@ -0,0 +1,20 @@ +{% set pageTitle = "RU03 - Required Reuse" %} +{% set pageSection = "Standards and technology" %} +{% set subSection = "Solution Architecture Framework - Requirements - Reuse Principles and Development of Shared Services" %} +{% set pageDescription = "" %} +{% set beta = true %} +{% set hideContact = "false" %} +{% set dateUpdated = "07 August 2026 (SAF Version 1.1)" %} + +{% extends "includes/app-layout.njk" %} + +{% block breadcrumb %} + {% include "solution-architecture-framework/_breadcrumb.njk" %} +{% endblock %} + +{% block bodyContent %} + + + + +{% endblock %} diff --git a/app/views/solution-architecture-framework/requirements/s/s01.njk b/app/views/solution-architecture-framework/requirements/s/s01.njk new file mode 100644 index 000000000..4cabe06f9 --- /dev/null +++ b/app/views/solution-architecture-framework/requirements/s/s01.njk @@ -0,0 +1,20 @@ +{% set pageTitle = "S01 - Executive Alignment" %} +{% set pageSection = "Standards and technology" %} +{% set subSection = "Solution Architecture Framework - Requirements - Strategic Alignment, Vision, and Roadmap" %} +{% set pageDescription = "" %} +{% set beta = true %} +{% set hideContact = "false" %} +{% set dateUpdated = "07 August 2026 (SAF Version 1.1)" %} + +{% extends "includes/app-layout.njk" %} + +{% block breadcrumb %} + {% include "solution-architecture-framework/_breadcrumb.njk" %} +{% endblock %} + +{% block bodyContent %} + + + + +{% endblock %} diff --git a/app/views/solution-architecture-framework/requirements/s/s02.njk b/app/views/solution-architecture-framework/requirements/s/s02.njk new file mode 100644 index 000000000..4dda0a951 --- /dev/null +++ b/app/views/solution-architecture-framework/requirements/s/s02.njk @@ -0,0 +1,20 @@ +{% set pageTitle = "S02 - Capability Model" %} +{% set pageSection = "Standards and technology" %} +{% set subSection = "Solution Architecture Framework - Requirements - Strategic Alignment, Vision, and Roadmap" %} +{% set pageDescription = "" %} +{% set beta = true %} +{% set hideContact = "false" %} +{% set dateUpdated = "07 August 2026 (SAF Version 1.1)" %} + +{% extends "includes/app-layout.njk" %} + +{% block breadcrumb %} + {% include "solution-architecture-framework/_breadcrumb.njk" %} +{% endblock %} + +{% block bodyContent %} + + + + +{% endblock %} diff --git a/app/views/solution-architecture-framework/requirements/s/s03.njk b/app/views/solution-architecture-framework/requirements/s/s03.njk new file mode 100644 index 000000000..37e1c242b --- /dev/null +++ b/app/views/solution-architecture-framework/requirements/s/s03.njk @@ -0,0 +1,20 @@ +{% set pageTitle = "S03 - Product Vision and Roadmap" %} +{% set pageSection = "Standards and technology" %} +{% set subSection = "Solution Architecture Framework - Requirements - Strategic Alignment, Vision, and Roadmap" %} +{% set pageDescription = "" %} +{% set beta = true %} +{% set hideContact = "false" %} +{% set dateUpdated = "07 August 2026 (SAF Version 1.1)" %} + +{% extends "includes/app-layout.njk" %} + +{% block breadcrumb %} + {% include "solution-architecture-framework/_breadcrumb.njk" %} +{% endblock %} + +{% block bodyContent %} + + + + +{% endblock %} diff --git a/app/views/solution-architecture-framework/requirements/s/s04.njk b/app/views/solution-architecture-framework/requirements/s/s04.njk new file mode 100644 index 000000000..dea8b7ca9 --- /dev/null +++ b/app/views/solution-architecture-framework/requirements/s/s04.njk @@ -0,0 +1,20 @@ +{% set pageTitle = "S04 - Meeting Needs" %} +{% set pageSection = "Standards and technology" %} +{% set subSection = "Solution Architecture Framework - Requirements - Strategic Alignment, Vision, and Roadmap" %} +{% set pageDescription = "" %} +{% set beta = true %} +{% set hideContact = "false" %} +{% set dateUpdated = "07 August 2026 (SAF Version 1.1)" %} + +{% extends "includes/app-layout.njk" %} + +{% block breadcrumb %} + {% include "solution-architecture-framework/_breadcrumb.njk" %} +{% endblock %} + +{% block bodyContent %} + + + + +{% endblock %} diff --git a/app/views/solution-architecture-framework/requirements/sd/sd01.njk b/app/views/solution-architecture-framework/requirements/sd/sd01.njk new file mode 100644 index 000000000..1bd913eb1 --- /dev/null +++ b/app/views/solution-architecture-framework/requirements/sd/sd01.njk @@ -0,0 +1,20 @@ +{% set pageTitle = "SD01 - Design Methodology" %} +{% set pageSection = "Standards and technology" %} +{% set subSection = "Solution Architecture Framework - Requirements - Solution Design & Methods" %} +{% set pageDescription = "" %} +{% set beta = true %} +{% set hideContact = "false" %} +{% set dateUpdated = "07 August 2026 (SAF Version 1.1)" %} + +{% extends "includes/app-layout.njk" %} + +{% block breadcrumb %} + {% include "solution-architecture-framework/_breadcrumb.njk" %} +{% endblock %} + +{% block bodyContent %} + + + + +{% endblock %} diff --git a/app/views/solution-architecture-framework/requirements/sd/sd02.njk b/app/views/solution-architecture-framework/requirements/sd/sd02.njk new file mode 100644 index 000000000..ab95007a5 --- /dev/null +++ b/app/views/solution-architecture-framework/requirements/sd/sd02.njk @@ -0,0 +1,20 @@ +{% set pageTitle = "SD02 - NHSE Principles" %} +{% set pageSection = "Standards and technology" %} +{% set subSection = "Solution Architecture Framework - Requirements - Solution Design & Methods" %} +{% set pageDescription = "" %} +{% set beta = true %} +{% set hideContact = "false" %} +{% set dateUpdated = "07 August 2026 (SAF Version 1.1)" %} + +{% extends "includes/app-layout.njk" %} + +{% block breadcrumb %} + {% include "solution-architecture-framework/_breadcrumb.njk" %} +{% endblock %} + +{% block bodyContent %} + + + + +{% endblock %} diff --git a/app/views/solution-architecture-framework/requirements/sd/sd03.njk b/app/views/solution-architecture-framework/requirements/sd/sd03.njk new file mode 100644 index 000000000..2b182a22f --- /dev/null +++ b/app/views/solution-architecture-framework/requirements/sd/sd03.njk @@ -0,0 +1,20 @@ +{% set pageTitle = "SD03 - Standards Compliance" %} +{% set pageSection = "Standards and technology" %} +{% set subSection = "Solution Architecture Framework - Requirements - Solution Design & Methods" %} +{% set pageDescription = "" %} +{% set beta = true %} +{% set hideContact = "false" %} +{% set dateUpdated = "07 August 2026 (SAF Version 1.1)" %} + +{% extends "includes/app-layout.njk" %} + +{% block breadcrumb %} + {% include "solution-architecture-framework/_breadcrumb.njk" %} +{% endblock %} + +{% block bodyContent %} + + + + +{% endblock %} diff --git a/app/views/solution-architecture-framework/requirements/sd/sd04.njk b/app/views/solution-architecture-framework/requirements/sd/sd04.njk new file mode 100644 index 000000000..64cc53a7b --- /dev/null +++ b/app/views/solution-architecture-framework/requirements/sd/sd04.njk @@ -0,0 +1,20 @@ +{% set pageTitle = "SD04 - Good Practice" %} +{% set pageSection = "Standards and technology" %} +{% set subSection = "Solution Architecture Framework - Requirements - Solution Design & Methods" %} +{% set pageDescription = "" %} +{% set beta = true %} +{% set hideContact = "false" %} +{% set dateUpdated = "07 August 2026 (SAF Version 1.1)" %} + +{% extends "includes/app-layout.njk" %} + +{% block breadcrumb %} + {% include "solution-architecture-framework/_breadcrumb.njk" %} +{% endblock %} + +{% block bodyContent %} + + + + +{% endblock %} diff --git a/app/views/solution-architecture-framework/requirements/sd/sd05.njk b/app/views/solution-architecture-framework/requirements/sd/sd05.njk new file mode 100644 index 000000000..0e9a061fe --- /dev/null +++ b/app/views/solution-architecture-framework/requirements/sd/sd05.njk @@ -0,0 +1,20 @@ +{% set pageTitle = "SD05 - Commodoties" %} +{% set pageSection = "Standards and technology" %} +{% set subSection = "Solution Architecture Framework - Requirements - Solution Design & Methods" %} +{% set pageDescription = "" %} +{% set beta = true %} +{% set hideContact = "false" %} +{% set dateUpdated = "07 August 2026 (SAF Version 1.1)" %} + +{% extends "includes/app-layout.njk" %} + +{% block breadcrumb %} + {% include "solution-architecture-framework/_breadcrumb.njk" %} +{% endblock %} + +{% block bodyContent %} + + + + +{% endblock %} diff --git a/app/views/solution-architecture-framework/requirements/sd/sd06.njk b/app/views/solution-architecture-framework/requirements/sd/sd06.njk new file mode 100644 index 000000000..f4507b993 --- /dev/null +++ b/app/views/solution-architecture-framework/requirements/sd/sd06.njk @@ -0,0 +1,20 @@ +{% set pageTitle = "SD06 - API First" %} +{% set pageSection = "Standards and technology" %} +{% set subSection = "Solution Architecture Framework - Requirements - Solution Design & Methods" %} +{% set pageDescription = "" %} +{% set beta = true %} +{% set hideContact = "false" %} +{% set dateUpdated = "07 August 2026 (SAF Version 1.1)" %} + +{% extends "includes/app-layout.njk" %} + +{% block breadcrumb %} + {% include "solution-architecture-framework/_breadcrumb.njk" %} +{% endblock %} + +{% block bodyContent %} + + + + +{% endblock %} diff --git a/app/views/solution-architecture-framework/requirements/sd/sd07.njk b/app/views/solution-architecture-framework/requirements/sd/sd07.njk new file mode 100644 index 000000000..5965f3fcd --- /dev/null +++ b/app/views/solution-architecture-framework/requirements/sd/sd07.njk @@ -0,0 +1,20 @@ +{% set pageTitle = "SD07 - Equal Treatment" %} +{% set pageSection = "Standards and technology" %} +{% set subSection = "Solution Architecture Framework - Requirements - Solution Design & Methods" %} +{% set pageDescription = "" %} +{% set beta = true %} +{% set hideContact = "false" %} +{% set dateUpdated = "07 August 2026 (SAF Version 1.1)" %} + +{% extends "includes/app-layout.njk" %} + +{% block breadcrumb %} + {% include "solution-architecture-framework/_breadcrumb.njk" %} +{% endblock %} + +{% block bodyContent %} + + + + +{% endblock %} diff --git a/app/views/solution-architecture-framework/requirements/sd/sd08.njk b/app/views/solution-architecture-framework/requirements/sd/sd08.njk new file mode 100644 index 000000000..ae2d001fa --- /dev/null +++ b/app/views/solution-architecture-framework/requirements/sd/sd08.njk @@ -0,0 +1,20 @@ +{% set pageTitle = "SD08 - Patterns" %} +{% set pageSection = "Standards and technology" %} +{% set subSection = "Solution Architecture Framework - Requirements - Solution Design & Methods" %} +{% set pageDescription = "" %} +{% set beta = true %} +{% set hideContact = "false" %} +{% set dateUpdated = "07 August 2026 (SAF Version 1.1)" %} + +{% extends "includes/app-layout.njk" %} + +{% block breadcrumb %} + {% include "solution-architecture-framework/_breadcrumb.njk" %} +{% endblock %} + +{% block bodyContent %} + + + + +{% endblock %} diff --git a/app/views/solution-architecture-framework/requirements/sd/sd09.njk b/app/views/solution-architecture-framework/requirements/sd/sd09.njk new file mode 100644 index 000000000..c435c5850 --- /dev/null +++ b/app/views/solution-architecture-framework/requirements/sd/sd09.njk @@ -0,0 +1,20 @@ +{% set pageTitle = "SD09 - Standards Selection" %} +{% set pageSection = "Standards and technology" %} +{% set subSection = "Solution Architecture Framework - Requirements - Solution Design & Methods" %} +{% set pageDescription = "" %} +{% set beta = true %} +{% set hideContact = "false" %} +{% set dateUpdated = "07 August 2026 (SAF Version 1.1)" %} + +{% extends "includes/app-layout.njk" %} + +{% block breadcrumb %} + {% include "solution-architecture-framework/_breadcrumb.njk" %} +{% endblock %} + +{% block bodyContent %} + + + + +{% endblock %} diff --git a/app/views/solution-architecture-framework/requirements/sd/sd10.njk b/app/views/solution-architecture-framework/requirements/sd/sd10.njk new file mode 100644 index 000000000..f9310d1fc --- /dev/null +++ b/app/views/solution-architecture-framework/requirements/sd/sd10.njk @@ -0,0 +1,20 @@ +{% set pageTitle = "SD10 - API Lifecycle" %} +{% set pageSection = "Standards and technology" %} +{% set subSection = "Solution Architecture Framework - Requirements - Solution Design & Methods" %} +{% set pageDescription = "" %} +{% set beta = true %} +{% set hideContact = "false" %} +{% set dateUpdated = "07 August 2026 (SAF Version 1.1)" %} + +{% extends "includes/app-layout.njk" %} + +{% block breadcrumb %} + {% include "solution-architecture-framework/_breadcrumb.njk" %} +{% endblock %} + +{% block bodyContent %} + + + + +{% endblock %} diff --git a/app/views/solution-architecture-framework/requirements/sd/sd11.njk b/app/views/solution-architecture-framework/requirements/sd/sd11.njk new file mode 100644 index 000000000..0ceafcf53 --- /dev/null +++ b/app/views/solution-architecture-framework/requirements/sd/sd11.njk @@ -0,0 +1,20 @@ +{% set pageTitle = "SD11 - Policy Adherence" %} +{% set pageSection = "Standards and technology" %} +{% set subSection = "Solution Architecture Framework - Requirements - Solution Design & Methods" %} +{% set pageDescription = "" %} +{% set beta = true %} +{% set hideContact = "false" %} +{% set dateUpdated = "07 August 2026 (SAF Version 1.1)" %} + +{% extends "includes/app-layout.njk" %} + +{% block breadcrumb %} + {% include "solution-architecture-framework/_breadcrumb.njk" %} +{% endblock %} + +{% block bodyContent %} + + + + +{% endblock %} diff --git a/app/views/solution-architecture-framework/requirements/sd/sd12.njk b/app/views/solution-architecture-framework/requirements/sd/sd12.njk new file mode 100644 index 000000000..f89b10e85 --- /dev/null +++ b/app/views/solution-architecture-framework/requirements/sd/sd12.njk @@ -0,0 +1,20 @@ +{% set pageTitle = "SD12 - Well Architected Framework" %} +{% set pageSection = "Standards and technology" %} +{% set subSection = "Solution Architecture Framework - Requirements - Solution Design & Methods" %} +{% set pageDescription = "" %} +{% set beta = true %} +{% set hideContact = "false" %} +{% set dateUpdated = "07 August 2026 (SAF Version 1.1)" %} + +{% extends "includes/app-layout.njk" %} + +{% block breadcrumb %} + {% include "solution-architecture-framework/_breadcrumb.njk" %} +{% endblock %} + +{% block bodyContent %} + + + + +{% endblock %} diff --git a/app/views/solution-architecture-framework/requirements/t/t01.njk b/app/views/solution-architecture-framework/requirements/t/t01.njk new file mode 100644 index 000000000..8ab854dd7 --- /dev/null +++ b/app/views/solution-architecture-framework/requirements/t/t01.njk @@ -0,0 +1,20 @@ +{% set pageTitle = "T01 - Tech Radar" %} +{% set pageSection = "Standards and technology" %} +{% set subSection = "Solution Architecture Framework - Requirements - Technology Choices" %} +{% set pageDescription = "" %} +{% set beta = true %} +{% set hideContact = "false" %} +{% set dateUpdated = "07 August 2026 (SAF Version 1.1)" %} + +{% extends "includes/app-layout.njk" %} + +{% block breadcrumb %} + {% include "solution-architecture-framework/_breadcrumb.njk" %} +{% endblock %} + +{% block bodyContent %} + + + + +{% endblock %} diff --git a/app/views/solution-architecture-framework/requirements/t/t02.njk b/app/views/solution-architecture-framework/requirements/t/t02.njk new file mode 100644 index 000000000..706c52f4f --- /dev/null +++ b/app/views/solution-architecture-framework/requirements/t/t02.njk @@ -0,0 +1,20 @@ +{% set pageTitle = "T02 - Appropriate Tech" %} +{% set pageSection = "Standards and technology" %} +{% set subSection = "Solution Architecture Framework - Requirements - Technology Choices" %} +{% set pageDescription = "" %} +{% set beta = true %} +{% set hideContact = "false" %} +{% set dateUpdated = "07 August 2026 (SAF Version 1.1)" %} + +{% extends "includes/app-layout.njk" %} + +{% block breadcrumb %} + {% include "solution-architecture-framework/_breadcrumb.njk" %} +{% endblock %} + +{% block bodyContent %} + + + + +{% endblock %} diff --git a/app/views/solution-architecture-framework/requirements/t/t03.njk b/app/views/solution-architecture-framework/requirements/t/t03.njk new file mode 100644 index 000000000..7c3ce6f7a --- /dev/null +++ b/app/views/solution-architecture-framework/requirements/t/t03.njk @@ -0,0 +1,20 @@ +{% set pageTitle = "T03 - Vendor Lock-in" %} +{% set pageSection = "Standards and technology" %} +{% set subSection = "Solution Architecture Framework - Requirements - Technology Choices" %} +{% set pageDescription = "" %} +{% set beta = true %} +{% set hideContact = "false" %} +{% set dateUpdated = "07 August 2026 (SAF Version 1.1)" %} + +{% extends "includes/app-layout.njk" %} + +{% block breadcrumb %} + {% include "solution-architecture-framework/_breadcrumb.njk" %} +{% endblock %} + +{% block bodyContent %} + + + + +{% endblock %}