Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Propose ADR to formalise the Accredited/Training provider relationships #4610

Draft
wants to merge 4 commits into
base: main
Choose a base branch
from

Conversation

inulty-dfe
Copy link
Contributor

@inulty-dfe inulty-dfe commented Oct 23, 2024

Context

Proposal to address the technical debt around the self join association between Training Providers and Accredited Providers.

Link to Visio document

Changes proposed in this pull request

Guidance to review

Things to check

  • This code does not rely on migrations in the same Pull Request
  • If this code includes a migration adding or changing columns, it also backfills existing records for consistency
  • If this code adds a column to the DB, decide whether it needs to be in analytics yml file or analytics blocklist
  • API release notes have been updated if necessary
  • Required environment variables have been updated added to the Azure KeyVault
  • Inform data insights team due to database changes
  • Make sure all information from the Trello card is in here
  • Rebased main
  • Cleaned commit history
  • Tested by running locally
  • Attach PR to Trello card

@inulty-dfe inulty-dfe force-pushed the create-conventional-accredited-provider-relationships branch from e5fb26d to ac93576 Compare October 23, 2024 11:25
@inulty-dfe inulty-dfe force-pushed the create-conventional-accredited-provider-relationships branch 2 times, most recently from 9898383 to 0bc0bee Compare October 24, 2024 10:37
@inulty-dfe
Copy link
Contributor Author

@inulty-dfe inulty-dfe force-pushed the create-conventional-accredited-provider-relationships branch from 0bc0bee to 46222b2 Compare October 31, 2024 14:28
@inulty-dfe inulty-dfe force-pushed the create-conventional-accredited-provider-relationships branch from 46222b2 to 77a1e1d Compare November 15, 2024 09:06
### Evolving provider relationships
The structural and conceptual relationships among and between providers and users has changed in many ways since this codebase was started.[[1]]

Providers have always had a relationship between one another in the form of course accreditation. More recently, this relationship has been extended to delegating this accreditation.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For clarity, DfE accredits providers, and these accredited providers ratify courses published by their training (a.k.a. lead) partners.

Accredited providers cannot delegate their accreditation to training partners.

We have Accredited provider relationships that exist solely for organisational reasons. This happens when:


| Provider | Is accredited? | Is accredited by |
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is accredited by should be Is ratified by.

| C | No | B |


| Provider | Is accredited? | "Is accredited by" | asdf | Who ratifies their courses? |
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is accredited by is incorrect since this is what DfE does. It's more accurate to say Is ratified by.


### Definitions

- A Training Provider
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- A Training Provider
- A Training Partner

Users would also be members of the organisation. This architecture has been abandoned but there are still remnants of this system in the codebase.


### Definitions
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Comment on lines +73 to +74
- Accrediting Provider
* A provider that accredits one or more courses on behalf of one or more training provider.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- Accrediting Provider
* A provider that accredits one or more courses on behalf of one or more training provider.
- Accredited Provider
* A provider that ratifies one or more courses for training partners.

* A provider that accredits one or more courses on behalf of one or more training provider.
- An Accredited Provider Relationship
* A directional association between an accredited provider and another provider.
- Lead partner
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lead partner is a term used when accredited providers lost their accreditation.

We previously had 'Lead schools,' which were logical groupings of schools with one designated as the administrator, hence 'lead school'.

Instead of creating a new category for the accredited providers that lost accreditation, they were merged with the school grouping and called 'lead partners'.

In the UI, we use 'training partner' not least because they partner with accredited providers to deliver training. i.e., it's a more meaningful term.

Copy link
Contributor

@defong defong left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.


#### Cons

- Eases the burden of onboarding developers
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The con is

Eases the burden of onboarding developers?


- Query the training provider / accredited provider relationships through typical relational associations
- Index the columns used to make these queries.
- More formally distinguish accredited and accrediting providers.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We need to review the correct usages of wording here as accredited is the only items that makes senses


class Course < ApplicationRecord
belongs_to :provider
belongs_to :accredited_provider, class_name: 'Provider', optional: true
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

all providers who are accredited to deliver initial teacher training (ITT) courses that lead to qualified teacher status (QTS)

from publications

negates optional: true

- None!


### 3. Replicate the Apply User / Provider Relationship model
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This seems to warrant deliberation and steer cc @carlosmartinez

Copy link
Contributor

@simonwhatley simonwhatley Nov 22, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The relationship model in Apply/Manage is complex partly because of safeguarding but also to define who can make application decisions.

Beyond the fundamental relationship (for example, X works with Y), I caution against a complex relationship model that may introduce a permissions model like Manage.

Here is some early work we did on permissions in Publish, which we ended up not using:

And a related post Managing accredited bodies if you’re a lead school which includes changes that were implemented.

(NB. 'accredited body' and 'lead school' are outdated terms replaced by 'accredited provider' and 'lead partner' respectively.)

@Nitemaeric Nitemaeric added the ADR Architecture Design Record label Nov 22, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
ADR Architecture Design Record
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants