Modernisering af CPR Services
Introduktion
Som led i den lĂžbende modernisering af CPR-systemet konverteres CPR Services til en Java platform, hvilket medfĂžrer mindre tilpasninger og ĂŠndringer for opslags-, sĂžge- og lĂŠseservices.
For CPRâs AjourfĂžringsservices (indberetning-/skriveservices) henvises specifikt til https://cprservicedesk.atlassian.net/wiki/spaces/EXMYN Adgang til siden gives til eksterne anvendere efter anmodning via CPRs servicedesk https://cpr.dk/kunder/support/link-til-cpr-servicedesk
Moderniserede versioner af services vil releases lĂžbende.
I en overgangsperiode vil bĂ„de den âgamleâ service og den ânyeâ service vĂŠre tilgĂŠngelige.
Hvad er nyt?
De moderniserede opslags-, sÞge- og lÊseservices indeholder fÄ mindre Êndringer i den overordnede GCTP protokol og i de enkelte services.
I hovedsagen ĂŠndres fĂžlgende i GCTP protokollen:
GCTP behandles som XML, og derfor skal bÄde GCTP requests og responses vÊre velformet XML dokumenter jvf. https://www.w3.org/TR/xml/#sec-well-formed.
GCTP requests valideres for at sikre, at request indholdet er gyldigt jvf. GCTP XSD skemaet.
FormÄlet med Êndringerne er at sikre, at bÄde CPR's egne systemer samt andre fagsystemer, kan benytte standardiserede XML vÊrktÞjer og tredjepartsbiblioteker, nÄr der integreres med CPR Services.
LĂŠs eventuelt ogsĂ„ afsnittet Ăndringer i version 2.0 services.
Udrulningsplan
Datoer for Êndringer i de enkelte services fremgÄr af .
Scope
Kun CPRâs opslags-, sĂžge- og lĂŠseservices er i scope.
For CPRâs AjourfĂžringsservices (indberetning-/skriveservices) henvises specifikt til . Adgang til siden gives til eksterne anvendere efter anmodning via CPRs servicedesk .
Lokale tilpasninger og forberedelse
Anvendertest og anvenders risikomitigering
Anvendere af CPRâs opslags-, sĂžge- og lĂŠseservices er selv ansvarlig for at vurdere risikoen for egen myndighed eller virksomhed.
CPRâs test og udrulning er baseret pĂ„, at services funktionelt releases 1:1 i forhold til âgamleâ services.
CPRâs vurdering af risikoen for anvenderne er sĂ„ledes for nuvĂŠrende, at risikoen for anvendere er meget lav. Det er imidlertid ogsĂ„ baseret pĂ„ en forventning om, at anvendernes integration til CPRâs services er baseret pĂ„ tidssvarende rammevĂŠrk.
XML-parser
Den klare forventning er, at anvendere, som anvender tidssvarende og standardiserede XML-parsere, ikke vil have behov for at foretage lokale tilpasninger.
Anvendere, som anvender en egen udviklet XML-parser, bĂžr foretage en grundig test. Ved modtagelse af ikke valid XML vil GCTP services svar tilbage med fĂžlgende struktur i responsen:
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<root xmlns="http://www.cpr.dk">
<Gctp v="2.0" env="">
<Kvit r="Fejl" t="GCTP Request er ikke valid XML" v="5400"/>
</Gctp>
</root>
Hvilke services anvender I?
Anvendere af CPRâs GCTP services bĂžr undersĂžge prĂŠcist, hvilke services som anvendes.
Derved kan du som anvender hurtigt identificere, hvornÄr en service Êndres og hvornÄr overgangsperioden slutter, og sÄledes vinduet for lokale test, jf.
Overgang til moderniserede CPR Services
Transitionen til moderniserede services foretages med fokus pÄ risikomitigering.
Moderniserede services vil benytte en ny GCTP protokolversion - version 2.0.
Kald, der i dag modtages med version 1.0 eller uden versionsnummer i <Gctp>
tagget, vil fortsat betjenes af den âgamleâ service i servicens overgangsperiode.
NÄr overgangsperioden er udlÞbet, vil den gamle serviceversion blive lukket, og alle kald til den pÄgÊldende service vil herefter betjenes af en moderniseret service - uanset versionnummer i <Gctp>
tagget.
Default service
FĂžr overgangsperiode (fĂžr release): Default service er gamle service. Det er ikke muligt at benytte version 2.0 service.
Overgangsperioden: Default service er gamle service. Det er muligt at benytte version 2.0 service.
Udfasningsperiode: Default service er ny 2.0 service. Det er ikke muligt at benytte gamle service. CPR forbeholder sig ret til uden varsel rulle tilbage til âovergangsperiodenâ, hvor gamle service er default.
Efter udfasningsperioden: Default service er ny 2.0 service. Det er ikke muligt at benytte gamle service, og der kan ikke rulles tilbage til gamle service.
BemÊrk: CPR kan og vil efter overgangsfasen uden varsel og kommunikation Êndre pÄ den default service, som betjener servicekald uden versionsnummer i tagget.
Anvenders lokale tilpasninger skal derfor tage hĂžjde for, at default service kan ĂŠndres uden varsel efter overgangsperioden.
SĂŠrlige bemĂŠrkninger vedr. flere GCTP services i et request
Hvis et <Gctp v="2.0">
request indeholder kald til flere GCTP services skal samtlige services i requestet vÊre tilgÊngelige som version 2.0 services (jvf. ) for at version 2.0 services bliver kaldt. Der kaldes aldrig bÄde version 1.0 og 2.0 services for at fuldfÞre et request. Hvis en service i requestet er kun tilgÊngelig som version 1.0 service vil samtlige services i requestet blive hÄndteret af version 1.0 services. Denne regel gÊlder ogsÄ selvom overgangsperioden/udfasningsperioden for en eller flere services i requestet er afsluttet.
Anvendertest
I overgangsperioden vil anvendere have mulighed for at teste integrationen mod moderniserede services.
CPRâs test
Inden en moderniseret service bliver releaset, er der afviklet en maskinel sammenligningstest mellem gamle og moderniserede services, der identificerer eventuelle forskel i responsen.
CPRâs klient CPRWeb ĂŠndres lĂžbende til at benytte moderniserede services. Hvis der mod forventning er fejl i servicens forretningslogik eller tilsvarende, vil det sĂ„ledes med hĂžj sandsynlighed blive konstateret gennem anvendelsen af CPRWeb.
VĂŠrktĂžjer til test af ĂŠndringer i CPR Services
FĂžlgende vĂŠrktĂžjer kan anvendes til at hjĂŠlpe med overgangen til moderniserede services (version >= 2.0).
GCTP 2.0 XSD skema
Skemaer for GCTP version 2.0 kan anvendes til at validere GCTP requests.
Filer sidst opdateret 25. januar 2024 kl. 14.48
Request validering i DEMO-miljĂžet (CPRâs kundevendte testmiljĂž)
Kunder kan med fordel kalde GCTP valideringsendpointet i DEMO miljĂžet for at teste egen integration med de moderniserede services. URL til endpointet er https://gctp-demo.cpr.dk/cpr-online-gctp/validate. Endpointet kan kaldes uden session (login).
Â
Eksempel gyldigt request/respons
De fleste vĂŠrdier i requestet som fx. System
og Service
har ingen betydning, hvor det alene angÄr validering. Requestet skal blot overholde GCTP skemaet.
curl -i https://gctp-demo.cpr.dk/cpr-online-gctp/validate -d '
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<root xmlns="http://www.cpr.dk">
<Gctp v="2.0">
<System r="CprSoeg">
<Service r="STAMP">
<CprServiceHeader r="STAMP">
<Key>
<Field r="PNR" v="..."/>
</Key>
</CprServiceHeader>
</Service>
</System>
</Gctp>
</root>
'
Â
GCTP requestet er gyldigt, og der returneres et <Kvit>
element i svaret:
HTTP/1.1 200
Content-Type: text/xml;charset=ISO-8859-1
Content-Length: 447
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<root xmlns="http://www.cpr.dk">
<Gctp v="2.0">
<System r="CprSoeg">
<Service r="STAMP">
<CprServiceHeader r="STAMP">
<Key>
<Field r="PNR" v="..."/>
</Key>
</CprServiceHeader>
</Service>
</System>
<Kvit r="Ok" v="0"/>
</Gctp>
</root>
Â
Eksempel pÄ ugyldig request/respons
Eksempel hvor requestet ikke overholder XML-standarden: </ CprServiceHeader>
i stedet for </CprServiceHeader>
.
Â
GCTP request er ugyldig, og der returneres <Kvit>
elementet i response, hvor attributten v
har vĂŠrdi 999
og attributten t
's vĂŠrdi er en beskrivelse af valideringsfejlen.
Ăndringer i version 2.0 services
Opbygning af restart (REST) nĂžglevĂŠrdier og SEARCH_ID feltvĂŠrdier
RestartnĂžgler benyttes i de sĂžgeservices, der understĂžtter paginering af responsdata. RestartnĂžgler bruges i efterfĂžlgende forespĂžrgsler for at hente den nĂŠste side data.
SEARCH_ID feltvĂŠrdier benyttes i visse sĂžgeservices for at indikere, at resultatet af en sĂžgning er blevet gemt. EfterfĂžlgende kald til servicen med en restartnĂžgle, der indeholder SEARCH_ID feltvĂŠrdien, vil hente data fra den gemte sĂžgning.
Opbygning af REST nĂžglevĂŠrdier i de version 2.0 GCTP services, der indeholder SEARCH_ID feltvĂŠrdier, kan afvige fra opbygningenaf REST nĂžglevĂŠrdier i version 1.0 services.
Version 1.0 service eksempel:
Version 2.0 service eksempel:
De CPR Services integrationer, der overfÞrer REST nÞglevÊrdien uÊndret fra responsdata til et efterfÞlgende forespÞrgsler forventes ikke at blive pÄvirket af denne Êndring.