This is a No-Fault Divorce clone of the CCD Case Migration Starter, which provides a framework for data migrations within CCD. The framework runs the following process:
CCD Case Migration Starter framework source code is located in HMCTS GitHub repository https://github.com/hmcts/ccd-case-migration-starter
-
Clone the GitHub repository and create a branch for the migration task.
-
Make the required source code changes for the migration task (see section below) and create a pull request.
-
Merge into master.
-
Parameterise the migration job in the cnp-flux-config repo (including job timing, batch size, case reference etc).
To set up a new migration, define an elastic search query to retrieve the cases that should be migrated in ElasticSearchQuery.java and add the business logic for the migration in DataMigrationServiceImpl.java.
The migrations are recorded in case history by a new case event. The name and description of this event can be configured in CaseMigrationProcessor.java.
During the migration, CCD makes a call to nfdiv-case-api and you will also need to add a blank event to the api for your migration to work (example PR).
After merging the migration into master, it is run like a cron, using the flux configuration defined in the cnp-flux-config repo.
If you have set up a project locally that includes CCD (e.g. nfdiv-case-api), you should find that entries in your local DB are automatically indexed by elastic search and made available through a Docker container. By sending a get request to the container, you can test the ES query:
Example request structure:
curl -X GET "localhost:9200/nfd_cases-000001/_search?pretty" -H 'Content-Type: application/json' -d 'query'
Example request with a query included:
curl -X GET "localhost:9200/nfd_cases-000001/_search?pretty" -H 'Content-Type: application/json' -d '{
"query": {
"bool": {
"must_not": [
{
"terms": {
"data.state": ["Draft"]
}
}
],
"should": [
{
"bool": {
"must_not":
{ "exists": {
"field": "data_classification.applicant1SolicitorOrganisationPolicy.value.Organisation"
}
}
}
}
]
}
},
"_source": [
"reference",
"state"
],
"size": 100,
"sort": [
{
"reference.keyword": "asc"
}
]
}'
You can also test the full migration job in AAT from your local development environment:
1.) Run bootJar to create a Jar file.
2.) Trigger the migration using the name of the Jar and nfdiv secrets from KeyVaults.
java -jar \
-Dspring.application.name="nfdiv-ccd-case-migration" \
-Didam.api.url="https://idam-api.aat.platform.hmcts.net" \
-Didam.client.id="[SECRET_FROM_VAULT]" \
-Didam.client.secret="[SECRET_FROM_VAULT]" \
-Didam.client.redirect_uri="https://nfdiv.aat.platform.hmcts.net/oauth2/callback" \
-Dcore_case_data.api.url="http://ccd-data-store-api-aat.service.core-compute-aat.internal" \
-Didam.s2s-auth.url="http://rpe-service-auth-provider-aat.service.core-compute-aat.internal" \
-Didam.s2s-auth.microservice="nfdiv_case_api" \
-Didam.s2s-auth.totp_secret="[SECRET_FROM_VAULT]" \
-Dmigration.idam.username="[SECRET_FROM_VAULT]" \
-Dmigration.idam.password="[SECRET_FROM_VAULT]" \
-Dmigration.jurisdiction="DIVORCE" \
-Dmigration.caseType="NFD" \
-Dcase-migration.elasticsearch.querySize="100" \
-Dcase-migration.enabled=true \
-Dlogging.level.root="ERROR" \
-Dlogging.level.uk.gov.hmcts.reform="INFO" \
-Dfeign.client.config.default.connectTimeout="60000" \
-Dfeign.client.config.default.readTimeout="60000" \
PATH/TO_MIGRATION.jar
The case type would be NFD to migrate standard AAT cases. However, you could choose to use your own custom casetype for testing (e.g. NFD-3000
), as this removes the risk of running the migration for other peoples test cases by mistake.
To run all unit tests please execute following command :-
./gradlew test
This project is licensed under the MIT License - see the LICENSE file for details.