Overblik

Dette dokument beskriver installation og konfiguration af Organdonorregister-servicen (ODR) samt tilhørende migreringsværktøj. Konfiguration af tilhørende DGWS/IDWS Proxy er også beskrevet.

Organdonorregister-servicen består af 2 komponenter (war-arkiver), der skal konfigureres og deployes på en applikationsserver:

Projektet bygges med Maven og kræver Java 8 samt en MariaDB-installation for at kunne afvikle unit-tests.

Udover normalt tilgængelige Maven dependencies, afhænger projektet også af interne artefakter. Hvis disse artefakter ikke er udgivet (released) i den påkrævede version i NSP's Nexus repository, skal man selv udtjekke og bygge dem fra NSP's Subversion i den pågældende version. Artefakternes forskellige versioner vil være tilgængelige under et Subversion-tag. Disse artefakter er:

For at bygge disse interne artefakter, henvises der til artefakternes dokumentation.


Alle filer der refereres til ligger sammen med projektets kildekode i NSP's Subversion. Referencer til stier er relative med udgangspunkt i projektets rodmappe.

Ændringslog

Version

Dato

Ændring

Ansvarlig

1.0.1

2018-08-20

Initialt dokument

Trifork

1.0.22018-08-31Ny releaseTrifork
1.0.32018-09-11Ændret databasedriver til MySQLTrifork
1.0.112019-08-19Opdateret default value for property "minlog.read-activity-text". Tilføjet SQL-script.Trifork
1.0.132019-25-09AjourførtTrifork
1.0.162020-05-25Opdateret properties til slettejobKIT
1.0.172021-12-07Opdateret ifm inaktive cpr numre afvisesKvalitetsIT

Byggevejledning

For at bygge projektet og dets deployables (war-filer) uden at køre unit-tests og integrationstests, anvendes følgende Maven kommando:

mvn clean install -DskipTests

Projektets deployables ender i target-mappen under de respektive moduler.

Afvikling af unit-tests

Følgende Maven-kommando anvendes til at bygge projektet og afvikle unittest: 

mvn clean install

Når projektet er bygget, kan unit-testene også afvikles alene med følgende Maven-kommando:

mvn clean test

Ved kørsel af unit-tests, anvendes en in-memory database, som automatisk startes op, når unit-tests afvikles. Det er derfor ikke nødvendigt at starte en ekstern database til unit-test.  

Afvikling af integrationstests

Se testvejledningen.

Krav til miljø

Komponenten er tilpasset at kunne indgå i det aktuelt gældende CI-miljø på NSP. Det tager aktuelt udgangspunkt i version 1 af NSP's platform Docker image.

Krav til database

Servicen er testet mod MariaDB version 10.1, som bliver brugt på NSP platformen.

Til unit-test anvendes en in-memory H2-database, som automatisk startes ved kørsel af unit-testene.

Krav til hardware

Der stilles ikke nogle særlige minimumskrav til hardware, men man skal forvente at bruge high-end hardware (både cpu, ram, netkort og diske) for at kunne opfylde de gældende svartidskrav på NSP.

Oprettelse af databaser og tabeller

Herunder beskrives servicens tilgang til database samt oprettelse af tabeller og views.

Tilgang til database

Servicen kræver en enkelt database til dens egen data. Derudover afhænger den af adgang til et view i en (replikeret) stamdata-database.

Servicen konfigureres med 2 datasources, som tilgår databaserne vha. separat specificerede brugere.

Databasebrugeren, der tilgår servicens egen database, skal være tildelt følgende rettigheder:

Databasebrugeren, der tilgår stamdata-view'et, skal være tildelt følgende rettigheder:

Oprettelse af database og tabeller

Datamodellen styres vha. inkrementelle SQL-scripter, der kan findes under compose/database/db/migration. De er inddelt i 2 undermapper:


Scripterne er udformet til at blive kørt med databasemigreringsværktøjet Flyway, men dette er kun aktiveret under afvikling af unit-tests, da dette ikke ønskes anvendt i produktion.

I produktion anvendes scripterne manuelt og skal køres på databasen i inkrementel rækkefølge baseret på versionsnummeret i filnavnet (først V1__(...).sql, dernæst V2__(...).sql, osv.). Hvert script må aldrig køres mere end én gang; der gælder dog en undtagelse for ikke-versionerede scripter, hvis filnavne begynder med R, som står for Repeatable. Disse Repeatable scripter skal køres hver gang deres indhold (checksum) er blevet ændret, men de må først køres efter alle versionerede scripter er blevet kørt.

Ved initial installation af servicen vil det således være følgende scripter, der skal køres i den nedenstående rækkefølge:

Servicens database

(Replikeret) Stamdata-database


Scriptet R__create_v2_Person_Simplified_view.sql opretter et view, som afhænger af eksistensen af tabellen v2_Person. Dette er tabellen, der indeholder CPR-ændringer, og den skal man selv stå for at levere. Under afvikling af unit-tests bliver en testudgave af denne tabel automatisk oprettet vha. et SQL-script i compose/database/db/test.


Deployment

Komponenten deployes vha. NSP's platform Docker image og konfigurationsfiler mountes i containeren som angivet i projektets Compose-filer.

odr-service-wildfly og odr-migration konfigureres ved hjælp hver deres Wildfly-modul, der indholder de nødvendige konfigurationsfiler til valg af datasources, brugerdefinerede parametre, logning, mm. Wildfly-modulet er integreret i komponentens Docker image.


Alle konfigurerbare properties bør gennemgås inden idriftsættelse, men standardværdierne er tiltænkt anvendelse i produktion medmindre andet er angivet.


Konfiguration af servicen

Herunder beskrives properties i odr-service-wildfly komponentens konfigurationsfiler.

application.properties

Properties er her opdelt i to tabeller. Den første tabel indeholder anvendte Spring Boot-properties. Den anden tabel indeholder properties, der er specifikt defineret til brug i servicen. Begge typer af properties er defineret i samme konfigurationsfil.

Spring Boot-properties

PropertyBeskrivelseDefault
spring.active.profilesAktiv profil i Spring Boot. Skal ikke ændres. Anvendes til at styre forskellige databasekonfigurationer ved henholdsvis unit-tests og deployment.production
spring.application.nameNavnet på applikationen. Skal ikke ændres.odr
spring.jmx.enabledDisable Spring Boot JMX. Skal ikke ændres. Deaktiveret da vi ikke udstiller særlig JMX funktionalitet.false
spring.jta.enabled

JTA transaktioner. Det er påkrævet at denne er false, således at Spring Boot i stedet anvender dens egen håndtering af transaktioner. (true/false)

false
management.server.portPort som Spring Boot management endpoints bind'er på. Endpoints deaktiveres ved at sættes værdien til -1.-1

Komponentspecifikke-properties

PropertyBeskrivelseDefault
datasource.odr.jndi-nameAngiver navnet på en JNDI datasource til Organdonorregister-databasenjava:jboss/datasources/ODR-DS
datasource.stamdata.jndi-nameAngiver navnet på den JNDI datasource der giver adgang til en (replikeret) stamdata-databasejava:jboss/datasources/STM-DS
dcc.endpointAngiver det endpoint, som DCC'en skal kalde. Dette kommer til at fremgå af den XML, der returneres i /dksconfig. Bør ændres før produktion.http://test1.fsk.netic.dk:8080/odr/odr
minlog.read-activity-textAngiver den tekst der registreres i MinLog, når der bliver læst Organdonorregistering-data for et CPR-nummerL\u00e6sning af Organdonorregistrering
schemavalidation.validate-requestsAngiver om requests skal schema-valideres (true/false)true
schemavalidation.validate-responses

Angiver om responses skal schema-valideres (true/false)

true
schemavalidation.fail-on-response-error

Angiver om en kald skal returnere fejl, hvis response ikke er schema-valid (true/false)

true
jobs.delete.cpr-max-resultsSlettejob: Angiver maksimum antal rækker med opdateringer i cpr-registry der skal læses ad gangen25
jobs.delete.cpr-max-loopsSlettejob: Angiver maksimum antal batches der skal behandles pr. jobeksekvering2
cprexists.validationlevel

Valideringsniveau for CPR validering

Eksempel: WARNING, REJECT, OFF


cprexists.url

URL for CPR exist service

Eksempel: http://test1-cnsp.ekstern-test.nspop.dk:8080/stamdata-cprexists

null
cprexists.maxTotalConnections

Konfiguration af client pool til kald af CPRExists service

200
cprexists.defaultMaxConnectionsPerRoute

Konfiguration af client pool til kald af CPRExists service

20
cprexists.inactive.statusKonfiguration af inaktive status, liste adskilt af komma30,50,60
whitelisted.level3.cvrsKomma separeret liste af cvr numre, der må kalde servicen med niveau 3 id kort
allowed.idws.audienceDet tilladte audience på indkommende idws requestshttps://fsk

minlogclient.properties

ODR anvender MinLogProvider til at registrere logninger i MinLog2, og i den forbindelse skal Kafka properties for Min Log 2 konfigureres. 

PropertyBeskrivelse
kafka.producer.bootstrap.serversKafka endpoint, som anvendes i forbindelse med kald til MinLog2
kafka.producer.client.idNavnet som ODR vil fremgå med i listen af Producers på et Kafka Cluster.
kafka.producer.key.serializerSerializer key for Kafka producer
kafka.producer.key.value.serializerSerializer value for Kafka producer
kafka.topic

Kafka topic som anvendes i forbindelse med kald til MinLog2

log4j2.xml

Konfigurerer logning for servicen.

Standardværdierne angiver nogle brugbare niveauer for anvendelse i produktion. Se Driftsvejledningen for uddybet beskrivelse af logning.

Se den officielle Log4j 2 dokumentation for alternativ konfiguration.

log4j-nspslalog.properties

Standardværdierne konfigurerer en Log4j-backend der logger med ISO 8601 timestamps.

Se NSP-util - Designdokument.doc eller den officielle Log4j 1 dokumentation for alternativ konfiguration.

Konfiguration af Accesshandler

security.properties

Konfigurerer security-api'et. Standardværdierne opsætter en keystore til signering af responses. Der henvises til accesshandlerens dokumentation for yderligere detaljer om konfiguration af security-api'et.

security.skip

Der henvises til accesshandlerens dokumentation for yderligere detaljer om konfiguration af security-api'et.

Konfiguration af migreringskomponent

application.properties

Spring Boot-properties

PropertyBeskrivelseDefault
spring.application.nameNavnet på applikationenodr-migration
spring.jmx.enabledDisable Spring Boot JMX. Skal ikke ændres. Deaktiveret da vi ikke udstiller særlig JMX funktionalitet.false
spring.jta.enabled

JTA transaktioner. Det er påkrævet at denne er false, således at Spring Boot i stedet anvender dens egen håndtering af transaktioner. (true/false)

false
management.server.addressNetværksadresse som management endpoints bliver bind'et på. Når der ikke defineret anden autentifikation skal den af hensyn til sikkerhed kun bind'e på 127.0.0.1.127.0.0.1
spring.datasource.jndi-nameAngiver navnet på den primære JNDI datasourcejava:jboss/datasources/ODR-DS

migration.personFileName

Angiver navnet på csv filen for persondata

PersonData.csv

migration.organDonorFileName

Angiver navnet på csv filen for organdonordata

OrganDonorData.csv


log4j2.xml

Konfigurerer logning for migreringskomponenten.

Standardværdierne angiver nogle brugbare niveauer for anvendelse til migrering i produktion. Se migeringsvejledningen for uddybet beskrivelse af logning.

Se den officielle Log4j 2 dokumentation for alternativ konfiguration.

Konfiguration af datasources

odr-service-wildfly komponenten kræver adgang til 2 JNDI datasources. Disse skal opsættes i Wildfly og refereres til i servicens application.properties.

Overblik over komponenter

Der følgende beskriver de forskellige deployables som komponenten indeholder.

Filnavn når deployet

Beskrivelse

Kilde

odr-service-wildfly.war

ODR servicen

odr-service-wildfly-<version>.war

odr-migration.warODR migeringsværktøj. Deployes kun når migrering skal foretages.odr-migration-<version>.war

Se driftsvejledningen for yderligere information.

Opgradering af komponenter

Når der kommer opgraderinger til en komponent, vil der medfølge release notes, der beskriver opgradering, fallback, osv. for den enkelte komponent.