Commercial Resources
This document provides detailed information for developers about the implementation, usage, and integration of the Commercial Resources feature within the system.
Overview
The Commercial Resources feature offers links to suggested frameworks that help schools identify potential cost-saving opportunities.
Resources are organised into the following categories:
- Administrative supplies
- Catering staff and services
- Educational ICT
- Educational supplies
- Non-educational support staff
- Other
- Premises and services
- Teaching and teaching support staff
- Utilities
Each category is further divided into subcategories.
These resources are displayed as links in three key areas across the service.
Spending Priorities
When a school’s spending exceeds the median of its comparator set, relevant resources are displayed next to the corresponding category chart. In this view, resources are grouped by category but not further divided into subcategories.
See Spending and Costs for details of the implementation of this feature.
Find ways to spend less
On the Find Ways to Spend Less page, the data is presented using a GDS tab component when viewed from a selected school. Each section is explained below. When viewed from a selected trust or local authority, only the All Resources section is displayed, and the tab component is omitted.
Recommended for this school
If a school’s spending in a specific category exceeds the median of its comparator set, the relevant resources are displayed. Here, they are grouped by category but not divided into subcategories.
All resources
This section presents all available resources, regardless of relevance. Resources are grouped by category and displayed using a GDS accordion component. Within each accordion section, they are further organised by subcategories.
Goals
Primary Goal
As part of financial benchmarking for schools, this feature aims to direct users to resources that may help them reduce spending.
Prerequisites/Dependencies
This feature has monorepo dependencies on:
- Web app
- Establishment API
- Content API
- Front-end components
Usage
DB / View
The commercial resources records are stored in the CommercialResources SQL table:
Id integer identity (1,1) NOT NULL,
Category nvarchar(50) NOT NULL,
SubCategory nvarchar(50) NOT NULL,
Title nvarchar(255) NOT NULL,
Url nvarchar(2000) NOT NULL,
ValidFrom datetimeoffset NOT NULL DEFAULT GETUTCDATE(),
ValidTo datetimeoffset NULL
The VW_CommercialResources view filters and displays only active resources within a valid date range.
API Reference
API call to Content: Retrieves commercial resources.
Endpoint: api/commercial-resources
[
{
"category": "string",
"subCategory": "string",
"title": "string",
"url": "string"
}
]
Web
The following controllers, view models, and views manage this feature:
School resources.
Trust resources.
Local Authority resources.
Spending Priorities.
Resources retrieved via the Content API call (see API Reference) are cached in-memory, as they are infrequently updated. See CommercialResourcesService here
CommercialResourcesBuilder groups and sorts the resources. See here
Within each of the views listed above, partials display:
-Recommended resources
-All resources
Resources for each category are managed using view components, view models, and views.
-View Component
-View Model
-View Component
Updating resources
From time-to-time the commercial resources will need to be updated. An alert is set up to trigger based on a nightly check of the commercial resources to verify a GET returns a successful Http status code for each resource. Any failures will trigger this alert and the logs will display any resources that are unsuccessful.
See Commercial resource check failures detected alert in the Monitoring and Alerting runbook for more information. Note this SharePoint resource requires authentication.
In order to track the history of updates, relevant SQL scripts should be persisted to the repo in the scripts/content folder.
In the future the management of commercial resources, and other resources handled by the Content API, will be done by an administrative front-end. This supports self-service of parts of the platform via a paired-down CMS to reduce the dependency on the development team.