Skip to content

Commit d6c1015

Browse files
authored
Merge pull request #197 from hmcts/nfdiv-4455-retain-and-dispose-migration
[NFDIV-4455] Retain and dispose TTL migration
2 parents 2a8b7fe + 68b8c76 commit d6c1015

File tree

10 files changed

+104
-454
lines changed

10 files changed

+104
-454
lines changed

src/main/java/uk/gov/hmcts/reform/migration/CaseMigrationProcessor.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,9 @@
2020
@Slf4j
2121
@Component
2222
public class CaseMigrationProcessor {
23-
private static final String EVENT_ID = "system-migrate-organisation-policies";
24-
private static final String EVENT_SUMMARY = "Data Migration - Set default organisation policies for NoC";
25-
private static final String EVENT_DESCRIPTION = "Data Migration - Set default organisation policies for NoC";
23+
private static final String EVENT_ID = "system-set-ttl";
24+
private static final String EVENT_SUMMARY = "Data Migration - Set retain and dispose time to live";
25+
private static final String EVENT_DESCRIPTION = "Data Migration - Set retain and dispose time to live";
2626
public static final String LOG_STRING = "-----------------------------------------";
2727

2828
@Autowired

src/main/java/uk/gov/hmcts/reform/migration/ccd/CoreCaseDataService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ public CaseDetails update(String authorisation, String eventId,
5454
.summary(eventSummary)
5555
.description(eventDescription)
5656
.build()
57-
).data(dataMigrationService.migrate(updatedCaseDetails.getData()))
57+
).data(dataMigrationService.migrate(updatedCaseDetails))
5858
.build();
5959

6060
return coreCaseDataApi.submitEventForCaseWorker(

src/main/java/uk/gov/hmcts/reform/migration/query/ElasticSearchQuery.java

Lines changed: 6 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -9,71 +9,22 @@ public class ElasticSearchQuery {
99
{
1010
"query": {
1111
"bool": {
12-
"must_not": [
12+
"must": [
1313
{
1414
"terms": {
15-
"state.keyword": [
16-
"Draft",
17-
"AwaitingApplicant1Response",
18-
"AwaitingApplicant2Response",
19-
"Applicant2Approved",
20-
"AwaitingPayment",
21-
"AwaitingHWFDecision",
22-
"Withdrawn",
23-
"Archived",
24-
"Rejected",
25-
"NewPaperCase",
26-
"FinalOrderComplete"
27-
]
28-
}
29-
}
30-
],
31-
"should": [
32-
{
33-
"bool": {
34-
"must_not":
35-
{ "exists": {
36-
"field": "data_classification.applicant1SolicitorOrganisationPolicy.value.Organisation"
37-
}
38-
}
39-
}
40-
},
41-
{
42-
"bool": {
43-
"must_not":
44-
{ "exists": {
45-
"field": "data_classification.applicant2SolicitorOrganisationPolicy.value.Organisation"
46-
}
47-
}
48-
}
49-
},
50-
{
51-
"bool": {
52-
"must_not": [
53-
{ "match": {
54-
"data.applicant1SolicitorOrganisationPolicy.OrgPolicyCaseAssignedRole": "[APPONESOLICITOR]"
55-
} }
56-
]
57-
}
58-
},
59-
{
60-
"bool": {
61-
"must_not": [
62-
{ "match": {
63-
"data.applicant2SolicitorOrganisationPolicy.OrgPolicyCaseAssignedRole": "[APPTWOSOLICITOR]"
64-
} }
65-
]
15+
"state.keyword": ["Draft"]
6616
}
6717
}
6818
],
69-
"minimum_should_match": 1
19+
"must_not": [
20+
{ "exists": { "field": "data.TTL" } }
21+
]
7022
}
7123
},
7224
"_source": [
7325
"reference",
7426
"state",
75-
"data.applicant1SolicitorOrganisationPolicy",
76-
"data.applicant2SolicitorOrganisationPolicy"
27+
"data.TTL"
7728
],
7829
"size": %s,
7930
"sort": [

src/main/java/uk/gov/hmcts/reform/migration/service/DataMigrationService.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,10 @@
22

33
import uk.gov.hmcts.reform.ccd.client.model.CaseDetails;
44

5-
import java.util.Map;
65
import java.util.function.Predicate;
76

87
public interface DataMigrationService<T> {
98
Predicate<CaseDetails> accepts();
109

11-
T migrate(Map<String, Object> data);
10+
T migrate(CaseDetails details);
1211
}
Lines changed: 13 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,70 +1,36 @@
11
package uk.gov.hmcts.reform.migration.service;
22

3-
import com.fasterxml.jackson.databind.ObjectMapper;
4-
import org.springframework.beans.factory.annotation.Autowired;
53
import org.springframework.stereotype.Service;
6-
import uk.gov.hmcts.ccd.sdk.type.Organisation;
7-
import uk.gov.hmcts.ccd.sdk.type.OrganisationPolicy;
84
import uk.gov.hmcts.reform.ccd.client.model.CaseDetails;
9-
import uk.gov.hmcts.reform.domain.model.UserRole;
105

6+
import java.time.LocalDate;
7+
import java.time.format.DateTimeFormatter;
8+
import java.util.HashMap;
119
import java.util.Map;
12-
import java.util.Optional;
1310
import java.util.function.Predicate;
1411

1512
@Service
1613
public class DataMigrationServiceImpl implements DataMigrationService<Map<String, Object>> {
17-
18-
private final String applicant1OrganisationPolicyKey = "applicant1SolicitorOrganisationPolicy";
19-
private final String applicant2OrganisationPolicyKey = "applicant2SolicitorOrganisationPolicy";
20-
private final ObjectMapper objectMapper;
21-
22-
@Autowired
23-
public DataMigrationServiceImpl(ObjectMapper objectMapper) {
24-
this.objectMapper = objectMapper;
25-
}
26-
2714
@Override
2815
public Predicate<CaseDetails> accepts() {
2916
return caseDetails -> caseDetails == null ? false : true;
3017
}
3118

3219
@Override
33-
public Map<String, Object> migrate(Map<String, Object> caseData) {
34-
if (caseData == null) {
20+
public Map<String, Object> migrate(CaseDetails details) {
21+
if (details == null || details.getData() == null) {
3522
return null;
3623
}
3724

38-
setOrgPolicy(caseData, applicant1OrganisationPolicyKey, UserRole.APPLICANT_1_SOLICITOR);
39-
setOrgPolicy(caseData, applicant2OrganisationPolicyKey, UserRole.APPLICANT_2_SOLICITOR);
40-
41-
return caseData;
42-
}
43-
44-
private void setOrgPolicy(Map<String, Object> caseData, String orgPolicyKey, UserRole solRole) {
45-
OrganisationPolicy<UserRole> orgPolicy = getOrInitializeOrgPolicy(caseData, orgPolicyKey);
46-
47-
if (orgPolicy.getOrganisation() != null && orgPolicy.getOrgPolicyCaseAssignedRole() == solRole) {
48-
return;
49-
}
50-
51-
setDefaultOrgPolicyFields(orgPolicy, solRole);
52-
53-
caseData.put(orgPolicyKey, orgPolicy);
54-
}
55-
56-
@SuppressWarnings("unchecked")
57-
private OrganisationPolicy<UserRole> getOrInitializeOrgPolicy(Map<String, Object> data, String orgPolicyKey) {
58-
return objectMapper.convertValue(Optional.ofNullable(data.get(orgPolicyKey))
59-
.orElseGet(OrganisationPolicy::new), OrganisationPolicy.class);
60-
}
25+
Map<String, Object> ttlMap = new HashMap<>();
26+
LocalDate deleteDate = details.getLastModified().plusMonths(6).toLocalDate();
27+
ttlMap.put("Suspended", "No");
28+
ttlMap.put("OverrideTTL", null);
29+
ttlMap.put("SystemTTL", deleteDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
6130

62-
private void setDefaultOrgPolicyFields(OrganisationPolicy<UserRole> organisationPolicy, UserRole solicitorRole) {
63-
organisationPolicy.setOrgPolicyCaseAssignedRole(solicitorRole);
31+
Map<String, Object> caseData = details.getData();
32+
caseData.put("TTL", ttlMap);
6433

65-
organisationPolicy.setOrganisation(
66-
Optional.ofNullable(organisationPolicy.getOrganisation())
67-
.orElse(new Organisation(null, null))
68-
);
34+
return caseData;
6935
}
7036
}

src/test/java/uk/gov/hmcts/reform/migration/CaseMigrationProcessorTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,9 @@
2929
public class CaseMigrationProcessorTest {
3030

3131
private static final String USER_TOKEN = "Bearer eeeejjjttt";
32-
private static final String EVENT_ID = "system-migrate-organisation-policies";
33-
private static final String EVENT_SUMMARY = "Data Migration - Set default organisation policies for NoC";
34-
private static final String EVENT_DESCRIPTION = "Data Migration - Set default organisation policies for NoC";
32+
private static final String EVENT_ID = "system-set-ttl";
33+
private static final String EVENT_SUMMARY = "Data Migration - Set retain and dispose time to live";
34+
private static final String EVENT_DESCRIPTION = "Data Migration - Set retain and dispose time to live";
3535
private static final String CASE_TYPE = "Test_Case_Type";
3636

3737
@InjectMocks

src/test/java/uk/gov/hmcts/reform/migration/ccd/CoreCaseDataServiceTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ private void setupMocks(UserDetails userDetails, Map<String, Object> data) {
111111
.caseDetails(caseDetails)
112112
.build();
113113

114-
when(dataMigrationService.migrate(data))
114+
when(dataMigrationService.migrate(caseDetails))
115115
.thenReturn(data);
116116

117117
when(coreCaseDataApi.startEventForCaseWorker(AUTH_TOKEN, AUTH_TOKEN, "30",

0 commit comments

Comments
 (0)