Versions Compared

Key

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

...

Dette dokument beskriver installation og konfiguration af Det Fælles Stamkort-servicen (FSK) samt den tilhørende konfiguration af dokumentdelingsservicen (DDS).

FSK-servicen består af én komponent to komponenter (war-arkivarkiver), der skal konfigureres og deployes på en applikationsserver:

  • fsk-serviceweb: War-arkiv . Servlet(servlet-baseret webservice pakket specifikt til Wildfly): Indeholder FSK forretningsservices, der kan kaldes af samarbejdende services.

  • fsk-operations: War-arkiv (servlet-baseret webservice pakket specifikt til Wildfly): Indeholder FSK vedligeholdelsesjobs, der kan kaldes af driften.

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:

  • cprsecurity-subscriber api (Maven identifierMaven identifier:  dkdk.sds:cprsubscriber)dgws_idws_proxy (Maven identifier: dk.sds.dgws-idws-proxy:wsproxy.nsp.security:security-api)

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

...

Info

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

2.0.0

2018-08-16

Initialt dokument

Trifork

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

For at afvikle projektets unit-tests, skal en MariaDB-database-server være tilgængelig.

I udviklingssammenhæng og ved unit-tests kan man nøjes med én databasebruger og ét database-schema. Disse kan oprettes vha. scripterne recreate_service_user.sql og recreate_database.sql som er lokaliseret under fsk-service/src/test/resources/db. Hvis disse standard-scripts anvendes, så passer de database-credentials, som er angivet i application.properties-filen i projektet. Database-strukturen bliver automatisk oprettet vha. Flyway SQL-scripter, når unit-testene afvikles.

Unit-testene i projektet kan afvikles med følgende Maven-kommando:

mvn clean test
2.0.82019-08-16Opdateret properties med konfiguration af Spring Boot Actuator. Opdateret default value for property "minLog.readActivity.text".Trifork
2.0.92019-25-09AjourførtTrifork
2.0.112019-12-16AjourførtTrifork
2.0.122021-05-25Tilføjet author propertiesKvalitetsIT
2.0.132021-08-20Fjernet reference til SyncJob og tabel PropertiesKvalitetsIT

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

Unit-testene i projektet kan afvikles med følgende Maven-kommando:

mvn clean test

Alternativt kan Alternativt kan også samtidigt bygge projektet ved at anvende Maven-kommandoen:

mvn clean install

Krav til miljø

Kravene er baseret på det driftsmiljø, der aktuelt er gældende på den Nationale Service Platform (NSP).

Krav til applikationsserver

Servicen er udviklet til at kunne afvikles på Wildfly 8 i produktion, som bliver brugt på NSP platformen, og denne installationsvejledning beskriver en sådan opsætning. Applikationsserveren kræver Java 8 eller højereKomponenten 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.

Specialhensyn i miljøer med flere app-servere

I miljøer med flere app-servere er det vigtigt at servicens interne job ikke kører i flere inkarnationer, da der så kan opstå "race conditions". Derfor bør det sikres at jobbets "enabled"-property fra application.properties kun er true på præcis én app-server, og false på de øvrige.

Det drejer sig om denne property, som også er beskrevet i tabellen længere nede: jobs.ddssync.enabled

Krav til operativsystem

Der stilles ingen krav til operativsystemet udover Java-understøttelse. Ubuntu Linux bruges som operativsystem på NSP’en, men udviklingen af servicen er foretaget på Windows 10 og denne platform kan ligeledes afvikle servicen.

Krav til database

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

Krav til hardware

Der stilles ikke nogle minimumskrav til hardware, udover minimumskravene for operativsystemet, for at kunne afvikle servicen fornuftigt til testformål. Dog skal man 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:

  • Ved normal drift i produktion: SELECT, INSERT, UPDATE, DELETE
  • Yderligere nødvendige rettigheder ved databaseoprettelse og migreringer:  CREATE, DROP, ALTER

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

  • Ved normal drift i produktion: SELECT
  • Yderligere nødvendige rettigheder ved databaseoprettelse og migreringer: CREATE VIEW, DROP

Oprettelse af database og tabeller

Servicens egen database styres vha. inkrementelle SQL-scripter, der kan findes under mappen fsk-service/etc/db/migration. De er inddelt i to undermapper:

  • fsk: indeholder scripter til at køre på servicens database.
  • stm: indeholder scripter til at køre på en (replikeret) stamdata-database.
Info

Scripterne er udformet til at blive kørt med databasemigreringsværktøjet Flyway, og afvikles automatisk under Maven-byg.

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

  • fsk/V1__create_Properties.sql

  • fsk/V2__create_RegistryIndex.sql

(Replikeret) Stamdata-database

  • stm/R__create_v2_Person_Simplified_view.sql
  • stm/R__create_Yderregister_v3_Simplified_view.sql
Info

Scripterne R__create_v2_Person_Simplified_view.sql og R__create_Yderregister_v3_Simplified_view.sql opretter views, som afhænger af eksistensen af tabellerne v2_Person og Yderregister_v3. Disse tabeller skal man selv stå for at levere. Under afvikling af Maven byg bliver testudgaver af tabellerne automatisk oprettet i den lokale database.

Deployment på Wildfly

Denne sektion beskriver konfiguration og deployment af alle ovenstående komponenter på Wildfly 8.

Installation af konfigurationsfiler

fsk-service konfigureres ved hjælp af et Wildfly-modul, der indholder de nødvendige konfigurationsfiler til valg af datasources, brugerdefinerede parametre, logning, mm.

Info

fsk-service er via en jboss-deployment-structure.xml konfigureret til at have en afhængighed på et Wildfly-modul med navnet dk.sundhedsdatastyrelsen.fsk.

Wildfly-modulet, som indeholder konfigurationsfilerne, kan findes under etc/wildfly/modules.

For at installere modulet på Wildfly kopieres indholdet i mappen etc/wildfly/modules til Wildfly's modul-mappe (<wildfly-root>/modules/). Med denne fremgangsmåde vil alle nødvendige filer blive tilføjet til Wildfly de rigtige steder. Eksempelvis vil filen i etc/wildfly/modules/dk/sundhedsdatastyrelsen/fsk/main/module.xml ende under <wildfly-root>/modules/dk/sundhedsdatastyrelsen/fsk/main/module.xml.

Selve konfigurationsfilerne for fsk-service er lokaliseret i mappen <wildfly-root>/modules/dk/sundhedsdatastyrelsen/fsk/main/resources. Konfigurationsfilerne vil være tilgængelige direkte på classpath'en for den deployede komponent.

Info

Alle konfigurerbare properties bør gennemgås inden idriftsættelse. Standardværdierne er tiltænkt anvendelse i test1-miljøet. Med "standardværdierne" forstås de værdier der står i eksempelfilerne under etc/wildfly-mappen i projektets kildekode.

Konfiguration af servicen

Herunder beskrives properties i fsk-service 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

...

synkroniseringsjobbet kun kaldes fra een server.

Krav til database

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

Bemærk, ved unittest anvendes en in-memory H2 database, som automatisk startes op, når unittests køres.

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. 

Servicen konfigureres med en datasource, som tilgår databaserne vha. separat specificerede brugere.

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

  • Ved normal drift i produktion: SELECT, INSERT, UPDATE, DELETE
  • Yderligere nødvendige rettigheder ved databaseoprettelse og migreringer:  CREATE, DROP, ALTER

Oprettelse af database og tabeller

Datamodellen styres vha. inkrementelle SQL-scripts, der kan findes under compose/database/ddl og indeholder scripts til at køre på servicens database.

Info

Scripterne er udformet til at blive kørt med databasemigreringsværktøjet Liquibase, og afvikles automatisk:

  • under unit tests (mod h2 database)
  • under afvikling af compose setups (development og test).

Database-ændringer til servicen i produktion køres på med Liquibase. Dette gøres i praksis ved at køre "release/docker-compose-db.yml" med kommandoen:

docker-compose -f compose/release/docker-compose-db.yml up --build

Bemærk, at "compose/configuration/liquibase.properties" skal indeholde de relevante database-credentials.

Deployment

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

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


Info

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 fsk komponentens konfigurationsfiler.

application.properties

Følgende tabel indeholder properties, der er specifikt defineret til brug i servicen. Komponentspecifikke-properties

PropertyBeskrivelseForslået værdiDefault
health.certificate-expires-warningAngiver antal dage, inden anvendte certifikater udløber, hvorfra komponentens statusside vil begynde at vise en advarsel.30
author.institution.rootAngiver author institution root id ved oprettelse af stamkort i fsk.1.2.208.176.1.11.2.208.176.1.1
author.institution.extensionAngiver author institution extension ved oprettelse af stamkort i fsk.11262110000160091126211000016009
author.institution.assigningAuthorityNameAngiver author institution autorityname ved oprettelse af stamkort i fsk.SORSOR
author.institution.nameAngiver navn på author institution ved oprettelse af stamkort i fsk.Fælles Stamkort udstedelseFælles Stamkort udstedelse
datasource-fsk.jndi-nameAngiver navnet på den primære JNDI datasourcejava:jboss/datasources/FSK-DS
sts.endpointAdresse på NSP'ens SecurityTokenService.http://test1.ekstern-test.nspop.dk:8080/sts/services/NewSecurityTokenService
sts.connect.timeout.millisConnect-timeout mod STS (ms) 
sts.read.timeout.millisRead-timeout mod STS (ms) 
sts.keystoreAngiver hvilken keystore, ser anvendes til at trække systemidkort (til anvendelse ved DGWS kald til samarbejdende services).NSP_Service_Consumer_sds.p12
sts.keystore.passwordPassword til ovennævnte keystore.Test1234
sts.idcard.subject.idOrganisationsid i form af CVR-nummer.33257872
sts.idcard.subject.nameOrganisationsnavn. Dette skal være navnet på den organisation, der matcher CVR nummeret angivet i sts.idcard.subject.idSundhedsdatastyrelsen
sts.idcard.system.nameSystemnavn til indlejring i systemidkortFSK
dgwsclient.pool.sizeAntal parallelle kald, der kan maksimalt anvendes til kald til de underliggende services SCES, SKR, LTR, BTR og ODR.50
dgwsclient.timeout.millisTimeout (ms) for tråde, der anvendes til kald til de underliggende services SCES, SKR, LTR, BTR og ODR.
Bør være større end de read-timeout-millis, der kan angives for de enkelte services.
10000
sces.enableEnable/disable SCES integrationtruetrue
sces.endpointEndpoint til CPR-Enkeltopslaghttp://test1.ekstern-test.nspop.dk:8080/stamdata-cpr-ws/service/DetGodeCPROpslag-1.0.4
sces.connect.timeout.millisConnect-timeout mod CPR-enkeltopslag (ms)20005000
sces.read.timeout.millisRead-timeout mod CPR-enkeltopslag (ms)700010000
odr.enableEnable/disable integration til organdonorregistrettruetrue
odr.endpointEndpoint til organdonorregisterhttp://localhost:8080/odr/odr
odr.connect.timeout.millisConnect-timeout mod organdonorregistret (ms)20005000
odr.read.timeout.millisRead-timeout mod organdonorregistret (ms)700010000
ltr.enableEnable/disable integration til livstestamenteregistrettruetrue
ltr.endpointEndpoint til livstestamenteregisterhttp://localhost:8080/ltr-btr/ltr
ltr.connect.timeout.millisConnect-timeout mod livstestamenteregistret (ms)20005000
ltr.read.timeout.millisRead-timeout mod livstestamenteregistret (ms)700010000
btr.startdatetime

Tidspunkt for, hvornår FSK servicen begynder at foretage kald til behandlingstestamenteregisterservicen (såfremt integrationen er enabled).

Dette angives som et dato/klokkeslæt i lokal tid på format yyyy-MM-dd HH:mm:ss.

2019-01-01 00:00:002019-01-01 00:00:00
btr.enableEnable/disable integration til behandlingstestamenteregistrettruetrue
btr.endpointEndpoint til behandlingstestamenteregisterhttp://localhost:8080/ltr-btr/btr
btr.connect.timeout.millisConnect-timeout mod behandlingstestamenteregistret (ms)20005000
btr.read.timeout.millisRead-timeout mod behandlingstestamenteregister (ms)700010000
skr.enableEnable/disable integration til stamkortregistrettruetrue
skr.endpointEndpoint til stamkortregisterhttp://localhost:8080/skr/skr
skr.connect.timeout.millisConnect-timeout mod stamkortregistret (ms)20005000
skr.read.timeout.millisRead-timeout mod stamkortregistret (ms)700010000
syes.endpointEndpoint til Stamdata Yder EnkeltopslagsServicehttp://localhost:8080/syes/syes
syes.connect.timeout.millisConnect-timeout mod Stamdata Yder EnkeltopslagsService (ms)20005000
syes.read.timeout.millisRead-timeout mod Stamdata Yder EnkeltopslagsService (ms)700010000
call.sces.status.30Fejl der returneres når CPR-nummeret har status 30Det er ikke muligt at hente stamkortet, da CPR-nummeret er inaktivt
call.sces.status.50Fejl der returneres når CPR-nummeret har status 50Det er ikke muligt at hente stamkortet, da CPR-nummeret er inaktivt
call.sces.status.60Fejl der returneres når CPR-nummeret har status 60Det er ikke muligt at hente stamkortet, da CPR-nummeret er inaktivt
call.sces.status.90Fejl der returneres når CPR-nummeret har status 90Det er ikke muligt at hente stamkortet, da borgeren er afgået ved døden for mere end 1 år siden
deletion.fsk.batchsizeAngiver den maksimale antal cpr numre, som behandles per gang

desired.execution.durationAngiver den maksimale udførelsestid for baggrundsjobbet. Angives som Duration i ISO-8601 formattet. 

deletion.save.deceasedAngiver period på, hvor længe en person minimum skal være død for at blive slettet af slettet jobbet. 
Formatet er D for dage, M for måneder og Y for år.
Nogle eksempler: 2Y er 2 år, 12M er 12 måneder og 60D er 60 dage. 


personinformation.url

URL for PersonInformation service

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



personinformation.errorcount.durationSpecificering af hvor lang tid tilbage der skal tælles fejl fra PersonInformation servicen (ifm. /health endpointet for slettejobbet). Angives som duration i ISO-8601 formattet. Default værdi er PT10M (10 minutter).PT10M
personinformation.error.tolerance

Antal fejl der tolereres fra PersonInformation servicen før /health endpointet for slettejobbet angiver servicen som ikke tilgængelig. Default værdi er 0.

0
fsk.httpclient.pooling.totalconnectionsKonfiguration af client pool til kald af samarbejdende services. Eksempel på værdi: 200

fsk.httpclient.pooling.maxconnections.pr.route

Konfiguration af client pool til kald af samarbejdende services. Eksempel på værdi: 20



log4j.xml

Konfigurerer logning for servicen.

Der benyttes en rolling file appender, hvor størrelsen af log filerne og antallet af gemte log filer konfigureres med de to environment variable: LOG_MAX_FILE_SIZE og LOG_MAX_BACKUP_INDEX.

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

Se den officielle Log4j 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 datasources

fsk-service komponenten kræver adgang til en JNDI datasource mod FSKs databse. Denne 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

Komponentspecifikke-properties

...

Angiver den tekst der registreres i MinLog, når DDS'en henter et dokument et kald til On-Demand-webservicen

...

Tidspunkt for, hvornår FSK servicen begynder at foretage kald til behandlingstestamenteregisterservicen (såfremt integrationen er enabled).

Dette angives som et dato/klokkeslæt i lokal tid på format yyyy-MM-dd HH:mm:ss.

...

FSK's "RepositoryUniqueId" som konfigureret i DDS. Er miljøafhængig på følgende måde:

TEST1: 1.2.208.176.43210.8.10.12
TEST2: 1.2.208.176.43210.8.20.12
UDDANNELSE: 1.2.208.176.43210.8.40.12
PRODTEST: 1.2.208.176.43210.8.30.12
PROD: 1.2.208.176.8.1.12

...

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.

minlogclient.properties

Konfigurerer MinLog for servicen.

Standardværdierne indeholder konfiguration der skriver MinLog-logninger til test1-miljøet.

I produktion skal properties konfigureres som beskrevet i MinLog Service - Guide til anvendere.

nspslalog-fsk.properties

Konfigurerer SLA-logning for servicen.

Standardværdien er at SLA-logning er slået til.

Se NSP-util - Designdokument.doc 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 datasources

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

Vær opmærksom på at datasource'ene skal opsættes med en strategi for reconnect håndtering i produktion. Se Wildfly's dokumentation for opsætning af datasources.

Info

I mappen etc/wildfly/standalone/deployments er inkluderet eksempler på datasource-konfigurationer til selve servicens database (fsk-ds.xml) og til (den replikerede) stamdata-database (fsk-stm-ds.xml). Disse datasource-konfigurationsfiler kan opsættes i Wildfly ved at kopiere dem ind i <wildfly-root>/standalone/deployments. Derudover skal der også deployes en databaseklient-driver i samme mappe. De medfølgende datasource-konfigurationer anvender driveren mariadb-java-client-<newest-version>.jar og denne medfølger ikke i projektet.

Ændring til standardkonfiguration i Wildfly

Standardkonfigurationen i Wildfly refererer i filen modules/system/layers/base/sun/jdk/main/service-loader-resources/META-INF/services/javax.script.ScriptEngineFactory til 2 ScriptEngineFactories:

com.sun.script.javascript.RhinoScriptEngineFactory
jdk.nashorn.api.scripting.NashornScriptEngineFactory

RhinoScriptEngineFactory findes ikke i Java 8. Derfor fås fejlen "javax.script.ScriptEngineFactory: Provider com.sun.script.javascript.RhinoScriptEngineFactory not found" når der anvendes Java 8. For at undgå denne fejlmeddelelse under opstart af Wildfly skal den første linje fjernes eller udkommenteres.

Deployment af komponenter

Komponenter, der skal deployes til Wildfly, kopieres til mappen <wildfly-root>/standalone/deployments.

Filnavn når deployet

Beskrivelse

Kilde

fsk-service.war

FSK servicen

fsk-service-<version>.war

fsk-operations.war

Oprydningsjobs til FSK (kaldes af driften efter behov)

fsk-operations-<version>.war

Se driftsvejledningen for yderligere information.

...

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

Start/genstart af komponenterne

Alle komponenter kan genstartes ved at opdatere war-filens last access time med Unix-kommandoen touch, hvilket automatisk detekteres af Wildfly's deploynent scanner. Alternativt kan Wildfly genstartes med kommandoen:

service wildfly8 restart

...

der beskriver opgradering, fallback, osv. for den enkelte komponent.

Konfiguration af DDS

Info

OBS: Den følgende konfiguration er udfaset, da denne funktionalitet er blevet erstattet af FSK Registry Adapter komponenten.

Der skal konfigureres 2 ting på DDS:

...