Skip to content

University Finance System (UFS)

[Team : Holberton Team] [Tech Lead : wm383] [Service Owner : ar972] [Service Manager : ajc322] [Product Manager : TBC]

This page gives an overview of the University Finance System (UFS) API, describing its current status, where and how it's developed and deployed, and who is responsible for maintaining it.

Service Description

The UFS API is a wrapper around the University Finance System Oracle database. It returns a limited set of data about the University's financial records, so that downstream systems can validate identifiers such as cost codes before submitting requests for processing.

The API currently has one endpoint, /cost-code. A POST with an XML body containing a cost code returns whether the UFS database accepts it, along with any error message from the database. The OpenAPI specification describes the request and response formats.

All environments read from the UFSLIVE database at ocm.admin.cam.ac.uk.

Service Status

The UFS API is currently live. The API itself is versioned as v1alpha1.

Contact

Technical queries and support should be directed to servicedesk@uis.cam.ac.uk and will be picked up by a member of the team working on the service. To ensure that you receive a response, always direct requests to servicedesk@uis.cam.ac.uk rather than reaching out to team members directly.

Issues discovered in the service or new feature requests should be opened as GitLab issues within the UFS project.

Environments

The UFS API is currently deployed to the following environments:

Name GCP Project ID URLs
Production ufs-prod-3fab5cc1 https://webapp.prod.ufs.gcp.uis.cam.ac.uk/
Staging ufs-test-8aafbb64 https://webapp.test.ufs.gcp.uis.cam.ac.uk/
Development ufs-devel-17ed9a5c https://webapp.devel.ufs.gcp.uis.cam.ac.uk/

Inbound traffic is restricted to the CUDN at the UIS Traffic Manager for all environments.

Source code

The source code for the UFS API is spread over the following repositories:

Repository Description
Application Server The source code for the UFS API
Infrastructure Deployment The Terraform infrastructure code for deploying the UFS API to GCP

Technologies used

The following gives an overview of the technologies the UFS API is built on.

Category Language Framework(s)
Server Python 3.9 FastAPI, Uvicorn
Database client Oracle Instant Client 23 cx_Oracle

Operational documentation

The following gives an overview of how the UFS API is deployed and maintained.

How and where the UFS API is deployed

The API runs as a Cloud Run service behind a GCP Cloud Load Balancer, deployed via our standard terraform deployment CI pipeline. There is no Cloud SQL database; the API connects to the on-premises Oracle database.

Database credentials are held in 1Password and copied into each environment's Secret Manager when Terraform is applied. The infrastructure README describes how to bootstrap the secrets and workspaces.

Deploying a new release

Making a new release of the application is done via release automation. Renovate then opens a merge request in the infrastructure repository to bump the deployed release.

When that merge request is merged, the CI pipeline deploys to staging. Use the "play" buttons in the pipeline to deploy to production.

Monitoring

Monitoring is configured as per our standard Google Cloud Run application module. In production, an alert is sent to the Holberton team when the load balancer returns more than one 5xx response in a minute.

Debugging

The README.md files in each of the source code repositories describe how to run the API locally, which needs a connection to vpn.admin.cam.ac.uk to reach the database.

Service Management

The Team responsible for this service is Holberton Team.

The Tech Lead for this service is wm383.

The Service Owner for this service is ar972.

The Service Manager for this service is ajc322.

The Product Manager for this service is TBC.

The following engineers have operational experience with this service and are able to respond to support requests or incidents: