Each year we close the current cycles courses and open the new cycle in a process we call Rollover
.
This involves copying existing providers and courses to new records to allow the
providers to update any details and then switching the API over to a new
recruitment cycle
which in turn releases the new courses on Find
& Apply
.
This document lists the changes needed to be made to the codebase and the timings for these changes.
The below sequence diagram covers an approximately 4 month period of time ending around October
.
It covers
- when there is only
current
recruitment cycle tocurrent
andnext
recruitment cycles then back tocurrent/new
recruitment cycle. - the rollover cycle from
prepare
tolaunch
toend
. - the period where
Find
closes and reopens with new courses. - the 4 main Validation points to validate the
data
,Publish
andFind
for the dry run testing.
sequenceDiagram
autonumber
participant Publish
participant Data
participant Find
rect rgb(100, 150, 255)
Note over Publish: When only current recruitment cycle is available
end
rect rgb(200, 150, 255)
Note over Publish,Data : Prepare rollover
Data->>Data: Create new recruitment cycle & rollover providers
Note over Data: This can be time consuming
rect rgb(191, 223, 255)
loop Validation point
Data->Data: Verify Data
end
end
end
Publish->>+ Data : Launch rollover
Note over Publish: When current and next recruitment cycles is available
Note over Find: Will be showing current courses
Data-->+Find: Find is Closed
Note over Find: Maintenance page is shown
Note over Data,Find: This will also affect Apply
rect rgb(191, 223, 255)
loop Validation point
Publish->Data: Verify Publish and Data
end
end
Data->>- Publish : End rollover
rect rgb(100, 150, 255)
Publish-->> Publish : When next becomes current/new recruitment cycles
Note over Publish: When only current recruitment cycle is available
end
rect rgb(191, 223, 255)
loop Validation point
Publish->Data: Verify Publish and Data
end
end
Find-->-Data: Find is Open
Note over Find: Will be showing next courses
rect rgb(191, 223, 255)
loop Validation point
Find->Data: Verify Find and Data
end
end
- Create new recruitment cycle & rollover providers
- Verify Data issues a. Overtime the data discrepancies maybe introduced, which may lead to rollover process experiencing issues.
- Launch rollover
- Find is Closed
- Verify Publish and Data issues a. Overtime the data discrepancies maybe introduced, which may lead to Publish experiencing (mainly UI) issues.
- End rollover
- When next becomes current recruitment cycles
- Verify Publish and Data issues a. Overtime the data discrepancies maybe introduced, which may lead to Publish experiencing (mainly API) issues.
- Find is Open
- Verify Find and Data issues a. Overtime the data discrepancies maybe introduced, which may lead to Find experiencing issues.
3,4,6 and 9 are most likely going to be time sensitive.
This should happen every year in good time to allow for any code updates/refactoring work.
-
Ensure that testing environments are set up for Publish and Find. (A minimum of 3gb ram is recommended for Publish)
-
Begin a test Rollover by running through the steps in On Rollover launch date.
You'll need a new
RecruitmentCycle
for the next cycle, to create this, runbundle exec rake rollover:create_recruitment_cycle"[YYYY, "YYYY-MM-DD", "YYYY-MM-DD"]"
. This isyear
,application_start_date
andapplication_end_date
respectively. You might not know theapplication_start_date
andapplication_end_date
in time for testing, so just use sensible placeholders. -
Test Publish, Publish public v1 endpoints, and Publish support console.
This covers 1 to 5 from the above Rollover overview diagram
-
End the test Rollover by running through the steps in On Rollover end date.
-
Test Publish, Publish public v1 endpoints, and Publish support console, and Find.
This covers 6 to 10 from the above Rollover overview diagram
-
Reverse the Rollover if further testing needed. It might be easiest to reset the testing database at this point to remove the rolled-over providers.
-
Update this document with any missing steps/changes identified.
-
Create a new
RecruitmentCycle
with the correctyear
,application_start_date
andapplication_end_date
by running:bundle exec rake 'rollover:create_recruitment_cycle"[YYYY, "YYYY-MM-DD", "YYYY-MM-DD"]' # example bundle exec rake 'rollover:create_recruitment_cycle[2023, "2022-10-11", "2023-09-29"]'
-
Rollover providers by running:
bundle exec rake rollover:providers
-
Create a Start Rollover PR including the following code changes:
- Update the setting for
can_edit_current_and_next_cycles: true
- Any hardcoded copy changes
- Update the setting for
-
Verify the dates on
Find
CycleTimetable -
Merge the Start Rollover PR
- Create an End Rollover PR including the following code changes:
- Update the setting for
can_edit_current_and_next_cycles: false
- Any hardcoded copy changes
- Increment setting
current_recruitment_cycle_year
- Increment year in setting
next_cycle_open_date
- Update the setting for
-
Merge the End Rollover PR
-
Complete the steps on
Find