Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Current(new) structure:

Drawio
zoom1
simple0
inComment0
custContentId3808821364
pageId3528425485
lbox1
diagramDisplayNameUntitled Diagram.drawio
contentVer2
revision2
baseUrlhttps://hee-tis.atlassian.net/wiki
diagramNamecurrent table structure.drawio
pCenter0
width810.5
links
tbstyle
height421

Old structure:

The old ProgrammeMembership table structure was :

...

Under the old table structure, when we need to extract a real programmeMembership, we use personId, programmeStartDate, programmeEndDate, programmeId, programmeMembershipType fields for identification. When there’s a field above with missing data(data issue), some problems occurs for querying all curriculum memberships against a specific programmeMembership.

Why is the refactoring

...

necessary?

please see: https://hee-tis.atlassian.net/wiki/spaces/NTCS/pages/106659893/Programmes+-+Programme+memberships#Why-the-distinction-between-the-2-is-necessary%3F

Distinction between 2 entities

Current(new) table structure:

...

...

Steps of refactoring:

To avoid thinking of naming of some interim tables, we decided to:

1. Rename ProgrammeMembership table to CurriculumMembership

Jira Legacy
serverSystem JIRA
serverId4c843cd5-e5a9-329d-ae88-66091fcfe3c7
keyTIS21-2420

  • Duplicate ProgrammeMembership table to a new table CurriculumMembership as a exact copy

  • Start writing updates to both tables

  • Modify all the queries (downstream services included) to use new CurriculumMembership.

  • Monitor for a few weeks to make sure there’re no queries to old ProgrammeMembership.

2. Rebuild new ProgrammeMemberhsip and populate the actual data

  • Drop old ProgrammeMembership table, and create

...

  • an empty new table with necessary fields only.

  • Insert data via grouped curriculumMembership.

  • Update CurriculumMembership table with adding a new foreign key field programmeMembershipUuid and populate data for the foreign key.

  • Save / Update in both new ProgrammeMembership and CurriculumMembership tables in parallel.

After the Step 2, the Interim table structure is as below:

Drawio
zoom1
simple0
inComment0
pageId3528425485
custContentId3559718931
lbox1
diagramDisplayNameUntitled Diagram.

...

drawio
contentVer2
revision2
baseUrlhttps://hee-tis.atlassian.net/wiki
diagramNameUntitled Diagram.drawio
pCenter0
width810.5
links
tbstyle
height743

3. Modify all the reference to deprecated fields to use ProgrammeMembership table only

TCS sql, queries:

Jira Legacy
serverSystem JIRA
serverId4c843cd5-e5a9-329d-ae88-66091fcfe3c7
keyTIS21-2388

Downstream services:

NDW-ETL

The queries Queries in NDW-ETL related to programme/curriculum memberships

Jira Legacy
serverSystem JIRA
serverId4c843cd5-e5a9-329d-ae88-66091fcfe3c7
keyTIS21-2397

TIS-Sync

Jira Legacy
serverSystem JIRA
serverId4c843cd5-e5a9-329d-ae88-66091fcfe3c7
keyTIS21-2392

Assessment

Jira Legacy
serverSystem JIRA
serverId4c843cd5-e5a9-329d-ae88-66091fcfe3c7
keyTIS21-2422

Bulk Upload

Bulk upload sends requests to TCS via tcs-client. As long as tcs queries are refactored, bulk upload is okay.

Reval

The data sync from TIS to Reval uses traineeInfoForConnection.sql in tcs-persistence.

TSS

Jira Legacy
serverSystem JIRA
serverId4c843cd5-e5a9-329d-ae88-66091fcfe3c7
keyTIS21-2399

ESR: not affected

Lambdas on AWS: not affected

4. Remove parallel saving and remove deprecated fields

Jira Legacy
serverSystem JIRA
serverId4c843cd5-e5a9-329d-ae88-66091fcfe3c7
keyTIS21-4106