diff --git a/cpa-repo/src/main/kotlin/no/nav/emottak/cpa/Routes.kt b/cpa-repo/src/main/kotlin/no/nav/emottak/cpa/Routes.kt
index 130f1b7d..f4c7f28f 100644
--- a/cpa-repo/src/main/kotlin/no/nav/emottak/cpa/Routes.kt
+++ b/cpa-repo/src/main/kotlin/no/nav/emottak/cpa/Routes.kt
@@ -177,7 +177,8 @@ fun Route.validateCpa(cpaRepository: CPARepository) = post("/cpa/validate/{$CONT
val validateRequest = call.receive(ValidationRequest::class)
try {
log.info(validateRequest.marker(), "Validerer ebms mot CPA")
- val cpa = cpaRepository.findCpa(validateRequest.cpaId) ?: throw NotFoundException("Fant ikke CPA (${validateRequest.cpaId})")
+ val cpa = cpaRepository.findCpa(validateRequest.cpaId)
+ ?: throw NotFoundException("Fant ikke CPA (${validateRequest.cpaId})")
cpa.validate(validateRequest) // Delivery Failure
val partyInfo = cpa.getPartyInfoByTypeAndID(validateRequest.addressing.from.partyId) // Delivery Failure
val encryptionCertificate = partyInfo.getCertificateForEncryption() // Security Failure
diff --git a/cpa-repo/src/main/resources/cpa/nav_qass_30823_modified.xml b/cpa-repo/src/main/resources/cpa/nav_qass_30823_modified.xml
new file mode 100644
index 00000000..3b448935
--- /dev/null
+++ b/cpa-repo/src/main/resources/cpa/nav_qass_30823_modified.xml
@@ -0,0 +1,2900 @@
+
+
+
+ 2024-08-09T14:32:47+02:00
+ 2025-09-07T23:59:00+02:00
+
+ 8138375
+ 922307814
+ 922307814
+
+
+
+
+
+
+ Legemelding
+
+
+
+ Partner_channelSMTP0_partner
+
+ NAV_SM_Sending2
+
+
+
+
+ Partner_channelSMTP0_partner
+
+ NAV_LE_Sending2
+
+
+
+
+ Partner_channelSMTP0_partner
+
+ NAV_OM_Sending2
+
+
+
+
+ Partner_channelSMTP0_partner
+
+ NAV_SO_Sending2
+
+
+
+
+ Partner_channelSMTP0_partner
+
+ NAV_Legemelding_Svarmelding2
+
+
+
+
+
+
+
+
+ Sykmelding
+
+
+
+ Partner_channelSMTP0_partner
+
+ NAV_Sykmelding3
+
+
+
+
+ Partner_channelSMTP0_partner
+
+ NAV_Sykmelde_Svar3
+
+
+
+
+
+
+
+
+ HenvendelseFraLege
+
+
+
+ Partner_channelSMTP0_partner
+
+ NAV_Henvendelse
+
+
+
+
+ Partner_channelSMTP0_partner
+
+ NAV_HenvendelseFraLege_Bekreftelse
+
+
+
+
+ Partner_channelSMTP0_partner
+
+ NAV_HenvendelseFraLege_Svar
+
+
+
+
+
+
+
+
+ BehandlerKrav
+
+
+
+ Partner_channelSMTP0_partner
+
+ NAV_BehandlerKravOppgjorsMelding2
+
+
+
+
+ Partner_channelSMTP0_partner
+
+ NAV_BehandlerKrav_Svarmelding2
+
+
+
+
+
+
+
+
+ HarBorgerFrikort
+
+
+
+ Partner_channelHTTP1_partner
+
+ NAV_EgenandelForesporsel
+
+
+
+
+ Partner_channelHTTP1_partner
+
+ NAV_EgenandelSvar
+
+
+
+
+ Partner_channelHTTP1_partner
+
+ NAV_EgenandelAvvisning
+
+
+
+
+
+
+
+
+ HarBorgerFrikortMengde
+
+
+
+ Partner_channelSMTP0_partner
+
+ NAV_EgenandelForesporselM
+
+
+
+
+ Partner_channelSMTP0_partner
+
+ NAV_EgenandelSvarM
+
+
+
+
+ Partner_channelSMTP0_partner
+
+ NAV_EgenandelAvvisningM
+
+
+
+
+
+
+
+
+ PasientlisteForesporsel
+
+
+
+ Partner_channelSMTP0_partner
+
+ NAV_FastlegensPasientliste
+
+
+
+
+ Partner_channelSMTP0_partner
+
+ NAV_PL_AbonnementInnmelding
+
+
+
+
+ Partner_channelSMTP0_partner
+
+ NAV_PL_AbonnementUtmelding
+
+
+
+
+ Partner_channelSMTP0_partner
+
+ NAV_PL_StatusAbonnement
+
+
+
+
+ Partner_channelSMTP0_partner
+
+ NAV_PL_Svarmelding
+
+
+
+
+
+
+
+ Partner_channelSMTP0_partner
+
+ NAV_PLAS_Svarmelding
+
+
+
+
+
+
+
+ Partner_channelSMTP0_partner
+
+ NAV_PLKV_Svarmelding
+
+
+
+
+
+
+
+ Partner_channelSMTP0_partner
+
+ NAV_PL_NegativSvarmelding
+
+
+
+
+
+
+
+ Partner_channelSMTP0_partner
+
+ NAV_PasientListe
+
+
+
+
+
+
+
+
+ Inntektsforesporsel
+
+
+
+ Partner_channelHTTP1_partner
+
+ NAV_Inntektsforesporsel
+
+
+
+
+ Partner_channelHTTP1_partner
+
+ NAV_InntektOpplysning
+
+
+
+
+ Partner_channelHTTP1_partner
+
+ NAV_AvvisningInntektsforesporsel
+
+
+
+
+
+
+
+
+ Trekkopplysning
+
+
+
+ Partner_channelSMTP0_partner
+
+ NAV_Trekkgrunnlag
+
+
+
+
+ Partner_channelSMTP0_partner
+
+ NAV_KvitteringTrekkvedtak
+
+
+
+
+ Partner_channelSMTP0_partner
+
+ NAV_AvvisningTrekkvedtak
+
+
+
+
+
+
+
+
+ ForesporselFraSaksbehandler
+
+
+
+ Partner_channelSMTP0_partner
+
+ NAV_Svar2
+
+
+
+
+ Partner_channelSMTP0_partner
+
+ NAV_A10A
+
+
+
+
+ Partner_channelSMTP0_partner
+
+ NAV_A10
+
+
+
+
+ Partner_channelSMTP0_partner
+
+ NAV_Foresporsel2
+
+
+
+
+ Partner_channelSMTP0_partner
+
+ NAV_ForesporselFraSaksbehandler_Bekreftelse
+
+
+
+
+
+ Partner_channelSMTP0_partner
+
+ NAV_ForesporselFraSaksbehandler_Svar
+
+
+
+
+
+
+
+
+ HenvendelseFraSaksbehandler
+
+
+
+ Partner_channelSMTP0_partner
+
+ NAV_HenvendelseFraSaksbehandler_Kvittering
+
+
+
+
+
+ Partner_channelSMTP0_partner
+
+ NAV_HenvendelseFraSaksbehandler_Svar
+
+
+
+
+ Partner_channelSMTP0_partner
+
+ NAV_Henvendelse2
+
+
+
+
+
+
+
+
+ Oppfolgingsplan
+
+
+
+ Partner_channelSMTP0_partner
+
+ NAV_Oppfolgingsplan_Kvittering
+
+
+
+
+ Partner_channelSMTP0_partner
+
+ NAV_Oppfolgingsplan_Svar
+
+
+
+
+ Partner_channelSMTP0_partner
+
+ NAV_Plan
+
+
+
+
+
+
+
+
+ DialogmoteInnkalling
+
+
+
+ Partner_channelSMTP0_partner
+
+ NAV_MoteRespons
+
+
+
+
+ Partner_channelSMTP0_partner
+
+ NAV_DialogmoteInnkalling_Bekreftelse
+
+
+
+
+ Partner_channelSMTP0_partner
+
+ NAV_MoteInnkalling
+
+
+
+
+ Partner_channelSMTP0_partner
+
+ NAV_DialogmoteInnkalling_Kvittering
+
+
+
+
+
+
+
+ MIIGRDCCBCygAwIBAgILAZu7vVkWSEvush0wDQYJKoZIhvcNAQELBQAwbjELMAkGA1UEBhMCTk8xGDAWBgNVBGEMD05UUk5PLTk4MzE2MzMyNzETMBEGA1UECgwKQnV5cGFzcyBBUzEwMC4GA1UEAwwnQnV5cGFzcyBDbGFzcyAzIFRlc3Q0IENBIEcyIFNUIEJ1c2luZXNzMB4XDTIzMDkxOTA4MTUxMVoXDTI2MDkxOTIxNTkwMFowaDELMAkGA1UEBhMCTk8xHDAaBgNVBAoME0hFTFNFUExBVFRGT1JNRU4gQVMxITAfBgNVBAMMGEhFTFNFUExBVFRGT1JNRU4gQVMgVEVTVDEYMBYGA1UEYQwPTlRSTk8tOTIyMzA3ODE0MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAuBi+0uxTE7TPcH5mucJz03FSMM5xm47kRujJ0xyYS2mKCRoydPX5qWCP7aExj/kL6p6MFwdZbZr4eXQ41JfEMbw/g6if/RyQVwWE3QCmgknyvLcvtufsdD/aOffn8wdCXLUuY3Q8pOkV8kQ6y1S00J/vo9h2JkdS/KL6CFN7LO4bxrkf9OKhyAHSpaDIWWuDgnqIubwHCFIPTeZQTokakRaVWyWVib9ZOHveGjQQlgnCY5G9nKFfMLuP1D5ScmqJM291LvnKgA+CZWA6qGWaa0ylonfyBbb/ycbIEQx3ggIcXIADMNK/PvEnf8sul73+HxrAo69bdFYgsBnrehkdEfYCetE6hZd6h+fg30NbJYTe/4o+tAN7D+Dg1XtKCbeTA0SCJ7M4nZohG31VHz/2dPZY/V/HJ1k3oFhGXbqb2g+KwTTNIK3EmDizn/mrcogj+rRR+e0GrHCPAFc6VGHp7psu/ybInXSDegYpf3hmvFZ2p46JjEw02cMn/DxyFClDAgMBAAGjggFnMIIBYzAJBgNVHRMEAjAAMB8GA1UdIwQYMBaAFKf+u2xZiK10LkZeemj50bu/z7aLMB0GA1UdDgQWBBR94FexAjBq6CIx2xB1Iei5Om8AYTAOBgNVHQ8BAf8EBAMCBkAwHwYDVR0gBBgwFjAKBghghEIBGgEDAjAIBgYEAI96AQEwQQYDVR0fBDowODA2oDSgMoYwaHR0cDovL2NybC50ZXN0NC5idXlwYXNzY2EuY29tL0JQQ2wzQ2FHMlNUQlMuY3JsMHsGCCsGAQUFBwEBBG8wbTAtBggrBgEFBQcwAYYhaHR0cDovL29jc3Bicy50ZXN0NC5idXlwYXNzY2EuY29tMDwGCCsGAQUFBzAChjBodHRwOi8vY3J0LnRlc3Q0LmJ1eXBhc3NjYS5jb20vQlBDbDNDYUcyU1RCUy5jZXIwJQYIKwYBBQUHAQMEGTAXMBUGCCsGAQUFBwsCMAkGBwQAi+xJAQIwDQYJKoZIhvcNAQELBQADggIBAEApxkKEwVTq+x7AC4J64VMnb5YHfdUBfOxyqJCEQJhDGe4dOSGGpgmvhpWD2FbEz11uCLIY+CGjqrPH56UUG0ZqPykLMqlqKSGLvDV00XD1UF4/042/Gv5EAJq7viaAUY3GiLGca8hsTIGCN33tcLemnIWHkSBbKOdF9Kt8h99OfDb+CE9L85aait7tTqG96FCRDsYwQRET8qkLmKRRE3sYQ8A7flrDO6KtOi1uF2JsVzoO3OvfCdWd1S+onqnQ+69d4xRdz3zB6qKxnxjDfBGFHWMkYjznl5FsbYI/jxCiPp9zpov9cXoQUKTR+qCB0hzKwve2iuSgVWADagfQAn3iaqD2ZdSkMNhOjOO7nMitUZczbELaRgTrm5VhPPIvfEsKJU2ptHfJkAStyJt82dBywcEZ0ERvX2pA0Uyq3fAmyN7IrIfkMLSbYOc0NbbeMFC9QduwKDMsUESniStnKD+30ueb97NKt8ohBJXepZCW8w9VEbyZz72TCl5V+oKDbz272aHKYQMc8iVQooz7JWEDsKyw5eUSCOrER5bgIQP/cYMacb+mzIpshrx31QoDXa2emV6oTl7lYjAD3aZOFp4uk++P3/pGQ3jP3WhaQGsoMrnZxgnH3bx/tAsYali6x+Pkp8jFqV2UOR8nNMDSP8JWDlhJr+cAtmC+0bevGfjl
+
+
+
+
+
+
+
+
+ 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
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SMTP
+
+
+ SMTP
+
+
+
+
+
+ HTTP
+
+ SSL
+
+
+
+ HTTP
+
+
+
+
+
+
+ 4
+ PT720M
+ NotGuaranteed
+
+ P4D
+
+ http://www.w3.org/2000/09/xmldsig#
+
+ http://www.w3.org/2001/04/xmlenc#sha256
+
+ http://www.w3.org/2001/04/xmldsig-more#rsa-sha256
+
+
+
+
+
+
+ 4
+ PT720M
+ NotGuaranteed
+
+ P4D
+
+ http://www.w3.org/2000/09/xmldsig#
+
+ http://www.w3.org/2001/04/xmlenc#sha256
+
+ http://www.w3.org/2001/04/xmldsig-more#rsa-sha256
+
+
+
+
+
+
+
+ http://www.w3.org/2000/09/xmldsig#
+ http://www.w3.org/2001/04/xmlenc#sha256
+
+ http://www.w3.org/2001/04/xmldsig-more#rsa-sha256
+
+
+
+
+
+
+
+ http://www.w3.org/2000/09/xmldsig#
+
+ http://www.w3.org/2001/04/xmlenc#sha256
+
+ http://www.w3.org/2001/04/xmldsig-more#rsa-sha256
+
+
+
+
+
+
+ 79768
+ 111949
+ 889640782
+ 889640782
+
+
+
+
+
+
+ Legemelding
+
+
+
+ NAV_asyncSMTPChannelA1
+
+ Partner_Legemelding_Svarmelding24
+
+
+
+
+ NAV_asyncSMTPChannelA1
+
+ Partner_SM_Sending20
+
+
+
+
+ NAV_asyncSMTPChannelA1
+
+ Partner_LE_Sending21
+
+
+
+
+ NAV_asyncSMTPChannelA1
+
+ Partner_OM_Sending22
+
+
+
+
+ NAV_asyncSMTPChannelA1
+
+ Partner_SO_Sending23
+
+
+
+
+
+
+
+
+ Sykmelding
+
+
+
+ NAV_asyncSMTPChannelA1
+
+ Partner_Sykmelde_Svar31
+
+
+
+
+ NAV_asyncSMTPChannelA1
+
+ Partner_Sykmelding30
+
+
+
+
+
+
+
+
+ HenvendelseFraLege
+
+
+
+ NAV_asyncSMTPChannelA1
+
+ Partner_HenvendelseFraLege_Bekreftelse1
+
+
+
+
+ NAV_asyncSMTPChannelA1
+
+ Partner_HenvendelseFraLege_Svar2
+
+
+
+
+ NAV_asyncSMTPChannelA1
+
+ Partner_Henvendelse0
+
+
+
+
+
+
+
+
+ BehandlerKrav
+
+
+
+ NAV_asyncSMTPChannelA1
+
+ Partner_BehandlerKrav_Svarmelding21
+
+
+
+
+ NAV_asyncSMTPChannelA1
+
+ Partner_BehandlerKravOppgjorsMelding20
+
+
+
+
+
+
+
+
+ HarBorgerFrikort
+
+
+
+ NAV_SyncHttpChannelB1
+
+ Partner_EgenandelSvar1
+
+
+
+
+ NAV_SyncHttpChannelB1
+
+ Partner_EgenandelAvvisning2
+
+
+
+
+ NAV_SyncHttpChannelB1
+
+ Partner_EgenandelForesporsel0
+
+
+
+
+
+
+
+
+ HarBorgerFrikortMengde
+
+
+
+ NAV_asyncSMTPChannelA1
+
+ Partner_EgenandelSvarM1
+
+
+
+
+ NAV_asyncSMTPChannelA1
+
+ Partner_EgenandelAvvisningM2
+
+
+
+
+ NAV_asyncSMTPChannelA1
+
+ Partner_EgenandelForesporselM0
+
+
+
+
+
+
+
+
+ PasientlisteForesporsel
+
+
+
+
+
+
+ NAV_asyncSMTPChannelA1
+
+ Partner_PLAS_Svarmelding5
+
+
+
+
+
+
+
+ NAV_asyncSMTPChannelA1
+
+ Partner_PLKV_Svarmelding6
+
+
+
+
+
+
+
+ NAV_asyncSMTPChannelA1
+
+ Partner_PL_NegativSvarmelding7
+
+
+
+
+
+
+
+ NAV_asyncSMTPChannelA1
+
+ Partner_PasientListe8
+
+
+
+
+ NAV_asyncSMTPChannelA1
+
+ Partner_FastlegensPasientliste0
+
+
+
+
+ NAV_asyncSMTPChannelA1
+
+ Partner_PL_AbonnementInnmelding1
+
+
+
+
+ NAV_asyncSMTPChannelA1
+
+ Partner_PL_AbonnementUtmelding2
+
+
+
+
+ NAV_asyncSMTPChannelA1
+
+ Partner_PL_StatusAbonnement3
+
+
+
+
+ NAV_asyncSMTPChannelA1
+
+ Partner_PL_Svarmelding4
+
+
+
+
+
+
+
+
+ Inntektsforesporsel
+
+
+
+ NAV_SyncHttpChannelB1
+
+ Partner_InntektOpplysning1
+
+
+
+
+ NAV_SyncHttpChannelB1
+
+ Partner_AvvisningInntektsforesporsel2
+
+
+
+
+ NAV_SyncHttpChannelB1
+
+ Partner_Inntektsforesporsel0
+
+
+
+
+
+
+
+
+ Trekkopplysning
+
+
+
+ NAV_asyncSMTPChannelA1
+
+ Partner_KvitteringTrekkvedtak1
+
+
+
+
+ NAV_asyncSMTPChannelA1
+
+ Partner_AvvisningTrekkvedtak2
+
+
+
+
+ NAV_asyncSMTPChannelA1
+
+ Partner_Trekkgrunnlag0
+
+
+
+
+
+
+
+
+ ForesporselFraSaksbehandler
+
+
+
+ NAV_asyncSMTPChannelA1
+
+ Partner_Foresporsel23
+
+
+
+
+ NAV_asyncSMTPChannelA1
+
+ Partner_ForesporselFraSaksbehandler_Bekreftelse4
+
+
+
+
+
+ NAV_asyncSMTPChannelA1
+
+ Partner_ForesporselFraSaksbehandler_Svar5
+
+
+
+
+ NAV_asyncSMTPChannelA1
+
+ Partner_Svar20
+
+
+
+
+ NAV_asyncSMTPChannelA1
+
+ Partner_A10A1
+
+
+
+
+ NAV_asyncSMTPChannelA1
+
+ Partner_A102
+
+
+
+
+
+
+
+
+ HenvendelseFraSaksbehandler
+
+
+
+ NAV_asyncSMTPChannelA1
+
+ Partner_Henvendelse22
+
+
+
+
+ NAV_asyncSMTPChannelA1
+
+ Partner_HenvendelseFraSaksbehandler_Kvittering0
+
+
+
+
+
+ NAV_asyncSMTPChannelA1
+
+ Partner_HenvendelseFraSaksbehandler_Svar1
+
+
+
+
+
+
+
+
+ Oppfolgingsplan
+
+
+
+ NAV_asyncSMTPChannelA1
+
+ Partner_Plan2
+
+
+
+
+ NAV_asyncSMTPChannelA1
+
+ Partner_Oppfolgingsplan_Kvittering0
+
+
+
+
+ NAV_asyncSMTPChannelA1
+
+ Partner_Oppfolgingsplan_Svar1
+
+
+
+
+
+
+
+
+ DialogmoteInnkalling
+
+
+
+ NAV_asyncSMTPChannelA1
+
+ Partner_MoteInnkalling2
+
+
+
+
+ NAV_asyncSMTPChannelA1
+
+ Partner_DialogmoteInnkalling_Kvittering3
+
+
+
+
+ NAV_asyncSMTPChannelA1
+
+ Partner_MoteRespons0
+
+
+
+
+ NAV_asyncSMTPChannelA1
+
+ Partner_DialogmoteInnkalling_Bekreftelse1
+
+
+
+
+
+
+
+ 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
+
+
+
+
+
+
+
+
+ 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
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SMTP
+
+
+ SMTP
+
+
+
+
+
+ HTTP
+
+ SSL
+
+
+
+ HTTP
+
+
+ SSL
+
+
+
+
+
+
+
+ 4
+ PT720M
+ NotGuaranteed
+
+ P4D
+
+ http://www.w3.org/2000/09/xmldsig#
+
+ http://www.w3.org/2001/04/xmlenc#sha256
+
+ http://www.w3.org/2001/04/xmldsig-more#rsa-sha256
+
+
+
+
+
+
+ 4
+ PT720M
+ NotGuaranteed
+
+ P4D
+
+ http://www.w3.org/2000/09/xmldsig#
+
+ http://www.w3.org/2001/04/xmlenc#sha256
+
+ http://www.w3.org/2001/04/xmldsig-more#rsa-sha256
+
+
+
+
+
+
+
+
+ http://www.w3.org/2000/09/xmldsig#
+
+ http://www.w3.org/2001/04/xmlenc#sha256
+
+ http://www.w3.org/2001/04/xmldsig-more#rsa-sha256
+
+
+
+
+
+
+ http://www.w3.org/2000/09/xmldsig#
+ http://www.w3.org/2001/04/xmlenc#sha256
+
+ http://www.w3.org/2001/04/xmldsig-more#rsa-sha256
+
+
+
+
+
+
+
+ http://www.oasis-open.org/committees/ebxml-msg/schema
+
+
+
+
+ http://www.kith.no/xmlstds/apprec/2004-11-21
+
+
+
+
+ http://www.kith.no/xmlstds/msghead/2006-05-24
+
+
+ http://www.kith.no/xmlstds/dialog/2006-10-11
+
+
+
+
+ http://www.kith.no/xmlstds/msghead/2006-05-24
+
+
+ http://www.kith.no/xmlstds/eresept/m2/2010-06-18
+
+
+
+
+ http://www.kith.no/xmlstds/msghead/2006-05-24
+
+
+ http://www.kith.no/xmlstds/sykmelding/2011-03-04
+
+
+
+
+ http://www.kith.no/xmlstds/msghead/2006-05-24
+
+
+ http://www.kith.no/xmlstds/HelseOpplysningerArbeidsuforhet/2013-10-01
+
+
+
+
+ http://www.kith.no/xmlstds/msghead/2006-05-24
+
+
+ http://www.kith.no/xmlstds/legeerklaring/2008-06-06
+
+
+
+
+ http://www.kith.no/xmlstds/lom/2003-12-01
+
+
+
+
+ http://www.kith.no/xmlstds/msghead/2006-05-24
+
+
+ http://www.kith.no/xmlstds/bkm/2006-12-20
+
+
+
+
+ http://www.kith.no/xmlstds/msghead/2006-05-24
+
+
+ http://www.kith.no/xmlstds/nav/egenandel/2010-02-01
+
+
+
+
+ http://www.kith.no/xmlstds/msghead/2006-05-24
+
+
+ http://www.kith.no/xmlstds/nav/egenandel/2010-02-01
+
+
+
+
+ http://www.kith.no/xmlstds/msghead/2006-05-24
+
+
+ http://www.kith.no/xmlstds/nav/egenandelmengde/2010-10-06
+
+
+
+
+ http://www.kith.no/xmlstds/msghead/2006-05-24
+
+
+ http://www.kith.no/xmlstds/nav/egenandelmengde/2010-10-06
+
+
+
+
+ http://www.kith.no/xmlstds/msghead/2006-05-24
+
+
+ http://www.kith.no/xmlstds/nav/pasientliste/2010-02-01
+
+
+
+
+ http://nav.no/ekstern/virkemiddelokonomi/tjenester/utbetaling/v1
+
+
+
+
+ http://nav.no/ekstern/virkemiddelokonomi/tjenester/utbetaling/v1
+
+
+
+
+ http://www.kith.no/xmlstds/InnrapporteringTrekk/InnrapporteringTrekk/2010-02-04
+
+
+
+
+ http://www.kith.no/xmlstds/InnrapporteringTrekk/InnrapporteringTrekk/2010-02-04
+
+
+
+
+ http://www.oasis-open.org/committees/ebxml-msg/schema
+
+
+
+
+ http://www.kith.no/xmlstds/apprec/2004-11-21
+
+
+
+
+ http://www.kith.no/xmlstds/msghead/2006-05-24
+
+
+ http://www.kith.no/xmlstds/dialog/2006-10-11
+
+
+
+
+ http://www.kith.no/xmlstds/msghead/2006-05-24
+
+
+ http://www.kith.no/xmlstds/eresept/m2/2010-06-18
+
+
+
+
+ http://www.kith.no/xmlstds/msghead/2006-05-24
+
+
+ http://www.kith.no/xmlstds/sykmelding/2011-03-04
+
+
+
+
+ http://www.kith.no/xmlstds/msghead/2006-05-24
+
+
+ http://www.kith.no/xmlstds/HelseOpplysningerArbeidsuforhet/2013-10-01
+
+
+
+
+ http://www.kith.no/xmlstds/msghead/2006-05-24
+
+
+ http://www.kith.no/xmlstds/legeerklaring/2008-06-06
+
+
+
+
+ http://www.kith.no/xmlstds/lom/2003-12-01
+
+
+
+
+ http://www.kith.no/xmlstds/msghead/2006-05-24
+
+
+ http://www.kith.no/xmlstds/bkm/2006-12-20
+
+
+
+
+ http://www.kith.no/xmlstds/msghead/2006-05-24
+
+
+ http://www.kith.no/xmlstds/nav/egenandel/2010-02-01
+
+
+
+
+ http://www.kith.no/xmlstds/msghead/2006-05-24
+
+
+ http://www.kith.no/xmlstds/nav/egenandel/2010-02-01
+
+
+
+
+ http://www.kith.no/xmlstds/msghead/2006-05-24
+
+
+ http://www.kith.no/xmlstds/nav/egenandelmengde/2010-10-06
+
+
+
+
+ http://www.kith.no/xmlstds/msghead/2006-05-24
+
+
+ http://www.kith.no/xmlstds/nav/egenandelmengde/2010-10-06
+
+
+
+
+ http://www.kith.no/xmlstds/msghead/2006-05-24
+
+
+ http://www.kith.no/xmlstds/nav/pasientliste/2010-02-01
+
+
+
+
+ http://nav.no/ekstern/virkemiddelokonomi/tjenester/utbetaling/v1
+
+
+
+
+ http://nav.no/ekstern/virkemiddelokonomi/tjenester/utbetaling/v1
+
+
+
+
+ http://www.kith.no/xmlstds/InnrapporteringTrekk/InnrapporteringTrekk/2010-02-04
+
+
+
+
+ http://www.kith.no/xmlstds/InnrapporteringTrekk/InnrapporteringTrekk/2010-02-04
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/cpa-repo/src/main/resources/db/migration/R__init_process_config.sql b/cpa-repo/src/main/resources/db/migration/R__init_process_config.sql
index d3074976..26228e00 100644
--- a/cpa-repo/src/main/resources/db/migration/R__init_process_config.sql
+++ b/cpa-repo/src/main/resources/db/migration/R__init_process_config.sql
@@ -12,7 +12,9 @@ values ('Behandler', 'HarBorgerFrikort', 'EgenandelForesporsel',
('Fastlege', 'PasientlisteForesporsel', 'HentAbonnementStatus', false, false, TRUE, TRUE, TRUE, TRUE, null, 'Avvisning'),
('Fastlege', 'PasientlisteForesporsel', 'HentPasientliste', false, false, TRUE, TRUE, TRUE, TRUE, null, 'Avvisning'),
('Fastlege', 'PasientlisteForesporsel', 'StartAbonnement', false, false, TRUE, TRUE, TRUE, TRUE, null, 'Avvisning'),
- ('Fastlege', 'PasientlisteForesporsel', 'StoppAbonnement', false, false, TRUE, TRUE, TRUE, TRUE, null, 'Avvisning')
+ ('Fastlege', 'PasientlisteForesporsel', 'StoppAbonnement', false, false, TRUE, TRUE, TRUE, TRUE, null, 'Avvisning'),
+ ('Fordringshaver', 'Inntektsforesporsel', 'Foresporsel', true, false, TRUE, false, TRUE, TRUE, null, 'Avvisning')
+
on conflict (ROLE, SERVICE, ACTION) do update set KRYPTERING = EXCLUDED.KRYPTERING,
KOMPRIMERING = EXCLUDED.KOMPRIMERING,
SIGNERING = EXCLUDED.SIGNERING,
diff --git a/ebms-provider/src/main/kotlin/no/nav/emottak/ebms/App.kt b/ebms-provider/src/main/kotlin/no/nav/emottak/ebms/App.kt
index fd1638a8..60a7060e 100644
--- a/ebms-provider/src/main/kotlin/no/nav/emottak/ebms/App.kt
+++ b/ebms-provider/src/main/kotlin/no/nav/emottak/ebms/App.kt
@@ -47,6 +47,7 @@ import no.nav.emottak.ebms.validation.MimeHeaders
import no.nav.emottak.ebms.validation.MimeValidationException
import no.nav.emottak.ebms.validation.validateMimeAttachment
import no.nav.emottak.ebms.validation.validateMimeSoapEnvelope
+import no.nav.emottak.ebms.xml.asByteArray
import no.nav.emottak.ebms.xml.asString
import no.nav.emottak.ebms.xml.getDocumentBuilder
import no.nav.emottak.melding.model.EbmsAttachment
@@ -54,6 +55,7 @@ import no.nav.emottak.util.createUniqueMimeMessageId
import no.nav.emottak.util.getEnvVar
import org.slf4j.LoggerFactory
import java.io.ByteArrayInputStream
+import java.nio.charset.StandardCharsets
import java.time.Duration
import java.time.Instant
import java.util.Base64
@@ -268,7 +270,7 @@ suspend fun ApplicationCall.respondEbmsDokument(ebmsDokument: EbMSDocument) {
this.append(MimeHeaders.SOAP_ACTION, "ebXML")
}
if (ebmsDokument.dokumentType() == DokumentType.PAYLOAD) {
- val ebxml = Base64.getMimeEncoder().encodeToString(ebmsDokument.dokument.asString().toByteArray())
+ val ebxml = Base64.getMimeEncoder().encodeToString(ebmsDokument.dokument.asByteArray())
val contentId = createUniqueMimeMessageId()
val ebxmlFormItem = PartData.FormItem(
ebxml,
@@ -282,7 +284,8 @@ suspend fun ApplicationCall.respondEbmsDokument(ebmsDokument: EbMSDocument) {
val parts = mutableListOf(ebxmlFormItem)
ebmsDokument.attachments.first().let {
PartData.FormItem(
- Base64.getMimeEncoder().encodeToString(it.bytes),
+ // Base64.getMimeEncoder().encodeToString(it.bytes), // Implicit ISO_8859_1
+ String(Base64.getMimeEncoder().encode(it.bytes), StandardCharsets.UTF_8), // TODO verifiser
{},
HeadersBuilder().apply {
append(MimeHeaders.CONTENT_TRANSFER_ENCODING, "base64")
diff --git a/ebms-provider/src/main/kotlin/no/nav/emottak/ebms/xml/DomUtils.kt b/ebms-provider/src/main/kotlin/no/nav/emottak/ebms/xml/DomUtils.kt
index 5928857e..c6949b8e 100644
--- a/ebms-provider/src/main/kotlin/no/nav/emottak/ebms/xml/DomUtils.kt
+++ b/ebms-provider/src/main/kotlin/no/nav/emottak/ebms/xml/DomUtils.kt
@@ -1,6 +1,7 @@
package no.nav.emottak.ebms.xml
import org.w3c.dom.Document
+import java.io.ByteArrayOutputStream
import java.io.StringWriter
import javax.xml.parsers.DocumentBuilder
import javax.xml.parsers.DocumentBuilderFactory
@@ -31,3 +32,11 @@ fun Document.asString(): String {
transformer.transform(domSource, sr)
return sw.toString()
}
+
+fun Document.asByteArray(): ByteArray {
+ return ByteArrayOutputStream().use {
+ TransformerFactory.newInstance().newTransformer()
+ .transform(DOMSource(this), StreamResult(it))
+ it.toByteArray()
+ }
+}
diff --git a/ebms-send-in/build.gradle.kts b/ebms-send-in/build.gradle.kts
index c65ba3b3..ca190819 100644
--- a/ebms-send-in/build.gradle.kts
+++ b/ebms-send-in/build.gradle.kts
@@ -67,8 +67,10 @@ dependencies {
implementation(libs.ktor.server.auth.jvm)
implementation(libs.ktor.client.auth)
implementation("io.ktor:ktor-client-cio-jvm:2.3.4")
+ implementation("com.sun.xml.messaging.saaj:saaj-impl:1.5.1")
implementation(libs.bundles.cxf)
runtimeOnly("net.java.dev.jna:jna:5.12.1")
+ testImplementation("javax.activation:activation:1.1.1")
testImplementation(testLibs.ktor.server.test.host)
testImplementation(testLibs.junit.jupiter.api)
testImplementation(testLibs.mockk.jvm)
diff --git a/ebms-send-in/src/main/kotlin/no/nav/emottak/ebms/App.kt b/ebms-send-in/src/main/kotlin/no/nav/emottak/ebms/App.kt
index f33a0b1f..c6582b6c 100644
--- a/ebms-send-in/src/main/kotlin/no/nav/emottak/ebms/App.kt
+++ b/ebms-send-in/src/main/kotlin/no/nav/emottak/ebms/App.kt
@@ -14,7 +14,6 @@ import io.ktor.server.netty.Netty
import io.ktor.server.plugins.contentnegotiation.ContentNegotiation
import io.ktor.server.request.receive
import io.ktor.server.response.respond
-import io.ktor.server.routing.get
import io.ktor.server.routing.post
import io.ktor.server.routing.routing
import io.micrometer.core.instrument.Timer.ResourceSample
@@ -25,15 +24,16 @@ import kotlinx.coroutines.withContext
import no.nav.emottak.auth.AZURE_AD_AUTH
import no.nav.emottak.auth.AuthConfig
import no.nav.emottak.fellesformat.wrapMessageInEIFellesFormat
+import no.nav.emottak.frikort.frikortXmlMarshaller
import no.nav.emottak.frikort.frikortsporring
-import no.nav.emottak.frikort.marshal
import no.nav.emottak.melding.model.SendInRequest
import no.nav.emottak.melding.model.SendInResponse
+import no.nav.emottak.utbetaling.UtbetalingClient
+import no.nav.emottak.utbetaling.utbetalingXmlMarshaller
import no.nav.emottak.util.getEnvVar
import no.nav.emottak.util.marker
import no.nav.security.token.support.v2.tokenValidationSupport
import org.slf4j.LoggerFactory
-import java.util.Timer
internal val log = LoggerFactory.getLogger("no.nav.emottak.ebms.App")
@@ -77,8 +77,32 @@ fun Application.ebmsSendInModule() {
runCatching {
log.info(request.marker(), "Payload ${request.payloadId} videresendes til fagsystem")
withContext(Dispatchers.IO) {
- timed(appMicrometerRegistry, "frikort-sporing") {
- frikortsporring(wrapMessageInEIFellesFormat(request))
+ when (request.addressing.service) {
+ "Inntektsforesporsel" ->
+ timed(appMicrometerRegistry, "Inntektsforesporsel") {
+ UtbetalingClient.behandleInntektsforesporsel(request).let {
+ SendInResponse(
+ request.messageId,
+ request.conversationId,
+ request.addressing.replyTo(request.addressing.service, it.msgInfo.type.v),
+ utbetalingXmlMarshaller.marshalToByteArray(it)
+ )
+ }
+ }
+ else ->
+ timed(appMicrometerRegistry, "frikort-sporing") {
+ frikortsporring(wrapMessageInEIFellesFormat(request)).let {
+ SendInResponse(
+ request.messageId,
+ request.conversationId,
+ request.addressing.replyTo(
+ it.eiFellesformat.mottakenhetBlokk.ebService,
+ it.eiFellesformat.mottakenhetBlokk.ebAction
+ ),
+ frikortXmlMarshaller.marshalToByteArray(it.eiFellesformat.msgHead)
+ )
+ }
+ }
}
}
}.onSuccess {
@@ -86,17 +110,7 @@ fun Application.ebmsSendInModule() {
request.marker(),
"Payload ${request.payloadId} videresending til fagsystem ferdig, svar mottatt og returnerert"
)
- call.respond(
- SendInResponse(
- request.messageId,
- request.conversationId,
- request.addressing.replayTo(
- it.eiFellesformat.mottakenhetBlokk.ebService,
- it.eiFellesformat.mottakenhetBlokk.ebAction
- ),
- marshal(it.eiFellesformat.msgHead).toByteArray()
- )
- )
+ call.respond(it)
}.onFailure {
log.error(request.marker(), "Payload ${request.payloadId} videresending feilet", it)
call.respond(HttpStatusCode.BadRequest, it.localizedMessage)
diff --git a/ebms-send-in/src/main/kotlin/no/nav/emottak/fellesformat/FellesFormatWrapper.kt b/ebms-send-in/src/main/kotlin/no/nav/emottak/fellesformat/FellesFormatWrapper.kt
index 638ac056..7f61edf9 100644
--- a/ebms-send-in/src/main/kotlin/no/nav/emottak/fellesformat/FellesFormatWrapper.kt
+++ b/ebms-send-in/src/main/kotlin/no/nav/emottak/fellesformat/FellesFormatWrapper.kt
@@ -2,8 +2,8 @@ package no.nav.emottak.fellesformat
import no.kith.xmlstds.msghead._2006_05_24.MsgHead
import no.nav.emottak.ebms.log
+import no.nav.emottak.frikort.frikortXmlMarshaller
import no.nav.emottak.frikort.unmarshal
-import no.nav.emottak.frikort.xmlMarshaller
import no.nav.emottak.melding.model.Addressing
import no.nav.emottak.melding.model.Party
import no.nav.emottak.melding.model.PartyId
@@ -32,7 +32,7 @@ fun wrapMessageInEIFellesFormat(sendInRequest: SendInRequest): EIFellesformat =
it.msgHead = unmarshal(sendInRequest.payload.toString(Charsets.UTF_8), MsgHead::class.java)
}.also {
if (getEnvVar("NAIS_CLUSTER_NAME", "local") != "prod-fss") {
- log.info("Sending in request to frikort with body " + xmlMarshaller.marshal(it))
+ log.info("Sending in request to frikort with body " + frikortXmlMarshaller.marshal(it))
}
}
diff --git a/ebms-send-in/src/main/kotlin/no/nav/emottak/frikort/FrikortClient.kt b/ebms-send-in/src/main/kotlin/no/nav/emottak/frikort/FrikortClient.kt
index c21a33fc..3a9cbb75 100644
--- a/ebms-send-in/src/main/kotlin/no/nav/emottak/frikort/FrikortClient.kt
+++ b/ebms-send-in/src/main/kotlin/no/nav/emottak/frikort/FrikortClient.kt
@@ -26,6 +26,6 @@ fun frikortsporring(fellesformat: EIFellesformat): FrikortsporringResponse = fri
frikortObjectFactory.createFrikortsporringRequest().also { it.eiFellesformat = fellesformat }
).also {
if (getEnvVar("NAIS_CLUSTER_NAME", "local") != "prod-fss") {
- log.info("Send in Frikort response " + xmlMarshaller.marshal(it))
+ log.info("Send in Frikort response " + frikortXmlMarshaller.marshal(it))
}
}
diff --git a/ebms-send-in/src/main/kotlin/no/nav/emottak/frikort/XmlMarshaller.kt b/ebms-send-in/src/main/kotlin/no/nav/emottak/frikort/XmlMarshaller.kt
index 9649c6c7..42c9c260 100644
--- a/ebms-send-in/src/main/kotlin/no/nav/emottak/frikort/XmlMarshaller.kt
+++ b/ebms-send-in/src/main/kotlin/no/nav/emottak/frikort/XmlMarshaller.kt
@@ -1,13 +1,14 @@
package no.nav.emottak.frikort
+import java.io.ByteArrayOutputStream
import java.io.StringWriter
import javax.xml.bind.JAXBContext
import javax.xml.stream.XMLInputFactory
-val xmlMarshaller = XmlMarshaller()
+val frikortXmlMarshaller = XmlMarshaller()
-fun marshal(objekt: Any) = xmlMarshaller.marshal(objekt)
-fun unmarshal(xml: String, clazz: Class): T = xmlMarshaller.unmarshal(xml, clazz)
+fun marshal(objekt: Any) = frikortXmlMarshaller.marshal(objekt)
+fun unmarshal(xml: String, clazz: Class): T = frikortXmlMarshaller.unmarshal(xml, clazz)
class XmlMarshaller {
@@ -36,6 +37,15 @@ class XmlMarshaller {
return writer.toString()
}
+ fun marshalToByteArray(objekt: Any): ByteArray {
+ return ByteArrayOutputStream().use {
+ synchronized(marshlingMonitor) {
+ marshaller.marshal(objekt, it)
+ }
+ it.toByteArray()
+ }
+ }
+
fun unmarshal(xml: String, clazz: Class): T {
val reader = XMLInputFactory.newInstance().createXMLStreamReader(xml.reader())
return synchronized(unmarshlingMonitor) {
diff --git a/ebms-send-in/src/main/kotlin/no/nav/emottak/utbetaling/UtbetalingClient.kt b/ebms-send-in/src/main/kotlin/no/nav/emottak/utbetaling/UtbetalingClient.kt
new file mode 100644
index 00000000..3d9cbd80
--- /dev/null
+++ b/ebms-send-in/src/main/kotlin/no/nav/emottak/utbetaling/UtbetalingClient.kt
@@ -0,0 +1,143 @@
+package no.nav.emottak.utbetaling
+
+import no.kith.xmlstds.msghead._2006_05_24.CS
+import no.kith.xmlstds.msghead._2006_05_24.ConversationRef
+import no.kith.xmlstds.msghead._2006_05_24.Document
+import no.kith.xmlstds.msghead._2006_05_24.MsgHead
+import no.kith.xmlstds.msghead._2006_05_24.RefDoc
+import no.nav.ekstern.virkemiddelokonomi.tjenester.utbetaling.v1.FinnBrukersUtbetalteYtelser
+import no.nav.ekstern.virkemiddelokonomi.tjenester.utbetaling.v1.FinnUtbetalingListe
+import no.nav.ekstern.virkemiddelokonomi.tjenester.utbetaling.v1.FinnUtbetalingListeBaksystemIkkeTilgjengelig
+import no.nav.ekstern.virkemiddelokonomi.tjenester.utbetaling.v1.FinnUtbetalingListeBrukerIkkeFunnet
+import no.nav.ekstern.virkemiddelokonomi.tjenester.utbetaling.v1.FinnUtbetalingListeFeil
+import no.nav.ekstern.virkemiddelokonomi.tjenester.utbetaling.v1.FinnUtbetalingListeIngenTilgangTilEnEllerFlereYtelser
+import no.nav.ekstern.virkemiddelokonomi.tjenester.utbetaling.v1.FinnUtbetalingListeUgyldigDato
+import no.nav.ekstern.virkemiddelokonomi.tjenester.utbetaling.v1.FinnUtbetalingListeUgyldigKombinasjonBrukerIdOgBrukertype
+import no.nav.emottak.cxf.ServiceBuilder
+import no.nav.emottak.melding.model.SendInRequest
+import no.nav.emottak.util.getEnvVar
+import no.nav.emottak.util.toXMLGregorianCalendar
+import org.slf4j.LoggerFactory
+import java.io.FileInputStream
+import java.time.Instant
+import java.util.UUID
+import javax.xml.namespace.QName
+
+object UtbetalingClient {
+
+ val log = LoggerFactory.getLogger(UtbetalingClient::class.java)
+
+ val utbetalingObjectFactory: no.nav.ekstern.virkemiddelokonomi.tjenester.utbetaling.v1.ObjectFactory =
+ no.nav.ekstern.virkemiddelokonomi.tjenester.utbetaling.v1.ObjectFactory()
+
+ val YRP_URL_TEST = "https://ytelser-rest-proxy.intern.dev.nav.no"
+ val YRP_URL_PROD = "https://ytelser-rest-proxy.intern.nav.no"
+ val RESOLVED_UTBETAL_URL =
+ when (getEnvVar("NAIS_CLUSTER_NAME", "local")) {
+ "local" -> YRP_URL_TEST
+ "dev-fss" -> YRP_URL_TEST
+ "prod-fss" -> YRP_URL_PROD
+ else -> YRP_URL_TEST
+ }
+ val UTBETAL_SOAP_ENDPOINT = RESOLVED_UTBETAL_URL + "/Utbetaling"
+
+ fun behandleInntektsforesporsel(sendInRequest: SendInRequest): MsgHead {
+ val msgHeadRequest = utbetalingXmlMarshaller.unmarshal(sendInRequest.payload.toString(Charsets.UTF_8), MsgHead::class.java)
+ val melding = msgHeadRequest.document.map { it.refDoc.content.any }
+ .also { if (it.size > 1) log.warn("Inntektsforesporsel refdoc har size >1") }
+ .first().also { if (it.size > 1) log.warn("Inntektsforesporsel content har size >1") }.first()
+ try {
+ val response: Any = when (melding) {
+ is FinnUtbetalingListe -> inntektsforesporselSoapEndpoint.finnUtbetalingListe(melding.request)
+ is FinnBrukersUtbetalteYtelser -> inntektsforesporselSoapEndpoint.finnBrukersUtbetalteYtelser(melding.request)
+ else -> throw IllegalStateException("Ukjent meldingstype. Classname: " + melding.javaClass.name)
+ }
+ return msgHeadResponse(msgHeadRequest, sendInRequest, marshal(response))
+ } catch (utbetalError: Throwable) {
+ log.info("Handling inntektsforesporsel error: " + utbetalError.message)
+ val feil = FinnUtbetalingListeFeil()
+ when (utbetalError) {
+ is FinnUtbetalingListeBrukerIkkeFunnet
+ -> feil.finnUtbetalingListebrukerIkkeFunnet = utbetalError.faultInfo
+ is FinnUtbetalingListeBaksystemIkkeTilgjengelig
+ -> feil.finnUtbetalingListebaksystemIkkeTilgjengelig = utbetalError.faultInfo
+ is FinnUtbetalingListeIngenTilgangTilEnEllerFlereYtelser
+ -> feil.finnUtbetalingListeingenTilgangTilEnEllerFlereYtelser = utbetalError.faultInfo
+ is FinnUtbetalingListeUgyldigDato
+ -> feil.finnUtbetalingListeugyldigDato = utbetalError.faultInfo
+ is FinnUtbetalingListeUgyldigKombinasjonBrukerIdOgBrukertype
+ -> feil.finnUtbetalingListeugyldigKombinasjonBrukerIdOgBrukertype = utbetalError.faultInfo
+ else ->
+ throw utbetalError.also { log.error("Ukjent feiltype: " + it.message, it) }
+ }
+ return msgHeadResponse(msgHeadRequest, sendInRequest, feil)
+ }
+ }
+}
+
+val inntektsforesporselSoapEndpoint: no.nav.ekstern.virkemiddelokonomi.tjenester.utbetaling.v1.Utbetaling =
+ ServiceBuilder(
+ no.nav.ekstern.virkemiddelokonomi.tjenester.utbetaling.v1.Utbetaling::class.java
+ )
+ .withAddress(getEnvVar("UTBETALING_URL", "https://ytelser-rest-proxy.dev.intern.nav.no/Utbetaling"))
+ .withWsdl(
+ "classpath:no.nav.ekstern.virkemiddelokonomi/tjenester/utbetaling/utbetaling.wsdl"
+ // "classpath:no.nav.ekstern.virkemiddelokonomi/tjenester.utbetaling/utbetaling.wsdl"
+ )
+ .withServiceName(QName("http://nav.no/ekstern/virkemiddelokonomi/tjenester/utbetaling/v1", "Utbetaling"))
+ .withEndpointName(QName("http://nav.no/ekstern/virkemiddelokonomi/tjenester/utbetaling/v1", "UtbetalingPort"))
+ .build()
+ .withUserNameToken(
+ when (getEnvVar("NAIS_CLUSTER_NAME", "local")) {
+ "local" -> "testUserName"
+ else -> String(FileInputStream("/secret/serviceuser/username").readAllBytes())
+ },
+ when (getEnvVar("NAIS_CLUSTER_NAME", "local")) {
+ "local" -> "testPassword"
+ else -> String(FileInputStream("/secret/serviceuser/password").readAllBytes())
+ }
+ )
+ .get()
+
+fun msgHeadResponse(incomingMsgHead: MsgHead, sendInRequest: SendInRequest, fagmeldingResponse: Any): MsgHead {
+ return incomingMsgHead.apply {
+ msgInfo.apply {
+ type = CS().apply {
+ dn = "Svar på forespørsel om inntekt"
+ v = "InntektInformasjon"
+ }
+ genDate = Instant.now().toXMLGregorianCalendar()
+ msgId = UUID.randomUUID().toString()
+ ack = CS().apply {
+ v = "N"
+ dn = "Nei"
+ }
+ val newReceiver = sender
+ val newSender = receiver
+ sender.apply { organisation = newSender.organisation }
+ receiver.apply { organisation = newReceiver.organisation }
+ conversationRef = ConversationRef().apply {
+ refToParent = sendInRequest.messageId
+ refToConversation = sendInRequest.conversationId
+ }
+ }
+ document.clear()
+ document.add(
+ Document().apply {
+ refDoc = RefDoc().apply {
+ msgType = CS().apply {
+ v = "XML"
+ dn = "XML-instans"
+ }
+ mimeType = "text/xml"
+ content = RefDoc.Content().apply {
+ any.add(
+ fagmeldingResponse
+ )
+ }
+ }
+ }
+ )
+ signature = null // TODO? (Dette er ikke "send-in" sin jobb, blir gjort senere)
+ }
+}
diff --git a/ebms-send-in/src/main/kotlin/no/nav/emottak/utbetaling/XmlMarshaller.kt b/ebms-send-in/src/main/kotlin/no/nav/emottak/utbetaling/XmlMarshaller.kt
new file mode 100644
index 00000000..3b39fee8
--- /dev/null
+++ b/ebms-send-in/src/main/kotlin/no/nav/emottak/utbetaling/XmlMarshaller.kt
@@ -0,0 +1,61 @@
+package no.nav.emottak.utbetaling
+
+import no.nav.ekstern.virkemiddelokonomi.tjenester.utbetaling.meldinger.v1.FinnBrukersUtbetalteYtelserRequest
+import no.nav.ekstern.virkemiddelokonomi.tjenester.utbetaling.meldinger.v1.FinnUtbetalingListeRequest
+import no.nav.ekstern.virkemiddelokonomi.tjenester.utbetaling.v1.FinnUtbetalingListe
+import java.io.ByteArrayOutputStream
+import java.io.StringWriter
+import javax.xml.bind.JAXBContext
+import javax.xml.stream.XMLInputFactory
+
+val utbetalingXmlMarshaller = XmlMarshaller()
+
+fun marshal(objekt: Any) = utbetalingXmlMarshaller.marshal(objekt)
+fun unmarshal(xml: String, clazz: Class): T = utbetalingXmlMarshaller.unmarshal(xml, clazz)
+
+class XmlMarshaller {
+
+ companion object {
+ private val jaxbContext = JAXBContext.newInstance(
+ FinnUtbetalingListeRequest::class.java,
+ FinnBrukersUtbetalteYtelserRequest::class.java,
+ FinnUtbetalingListe::class.java,
+ org.oasis_open.committees.ebxml_cppa.schema.cpp_cpa_2_0.ObjectFactory::class.java,
+ no.nav.ekstern.virkemiddelokonomi.tjenester.utbetaling.meldinger.v1.ObjectFactory::class.java,
+ no.nav.ekstern.virkemiddelokonomi.tjenester.utbetaling.feil.v1.ObjectFactory::class.java,
+ no.nav.ekstern.virkemiddelokonomi.tjenester.utbetaling.v1.ObjectFactory::class.java,
+ org.xmlsoap.schemas.soap.envelope.ObjectFactory::class.java,
+ no.kith.xmlstds.msghead._2006_05_24.ObjectFactory::class.java,
+ org.w3._1999.xlink.ObjectFactory::class.java,
+ org.w3._2009.xmldsig11_.ObjectFactory::class.java
+ )
+ private val marshaller = jaxbContext.createMarshaller()
+ private val unmarshaller = jaxbContext.createUnmarshaller()
+ private val marshlingMonitor = Any()
+ private val unmarshlingMonitor = Any()
+ }
+
+ fun marshal(objekt: Any): String {
+ val writer = StringWriter()
+ synchronized(marshlingMonitor) {
+ marshaller.marshal(objekt, writer)
+ }
+ return writer.toString()
+ }
+
+ fun marshalToByteArray(objekt: Any): ByteArray {
+ return ByteArrayOutputStream().use {
+ synchronized(marshlingMonitor) {
+ marshaller.marshal(objekt, it)
+ }
+ it.toByteArray()
+ }
+ }
+
+ fun unmarshal(xml: String, clazz: Class): T {
+ val reader = XMLInputFactory.newInstance().createXMLStreamReader(xml.reader())
+ return synchronized(unmarshlingMonitor) {
+ unmarshaller.unmarshal(reader, clazz).value
+ }
+ }
+}
diff --git a/ebms-send-in/src/test/kotlin/InntektsforesporselTest.kt b/ebms-send-in/src/test/kotlin/InntektsforesporselTest.kt
new file mode 100644
index 00000000..3a27c3d6
--- /dev/null
+++ b/ebms-send-in/src/test/kotlin/InntektsforesporselTest.kt
@@ -0,0 +1,165 @@
+import no.kith.xmlstds.msghead._2006_05_24.MsgHead
+import no.nav.ekstern.virkemiddelokonomi.tjenester.utbetaling.feil.v1.ObjectFactory
+import no.nav.ekstern.virkemiddelokonomi.tjenester.utbetaling.v1.FinnUtbetalingListe
+import no.nav.ekstern.virkemiddelokonomi.tjenester.utbetaling.v1.FinnUtbetalingListeBrukerIkkeFunnet
+import no.nav.ekstern.virkemiddelokonomi.tjenester.utbetaling.v1.FinnUtbetalingListeFeil
+import no.nav.emottak.melding.model.Addressing
+import no.nav.emottak.melding.model.EbmsProcessing
+import no.nav.emottak.melding.model.Party
+import no.nav.emottak.melding.model.PartyId
+import no.nav.emottak.melding.model.SendInRequest
+import no.nav.emottak.utbetaling.msgHeadResponse
+import no.nav.emottak.utbetaling.unmarshal
+import no.nav.emottak.utbetaling.utbetalingXmlMarshaller
+import org.junit.jupiter.api.Test
+
+class InntektsforesporselTest {
+
+ @Test
+ fun unmarshalMsgHead() {
+ val response = unmarshal(
+ String(
+ this::class.java.classLoader.getResourceAsStream("inntektsforesporsel/inntektsforesporsel.xml")!!
+ .readAllBytes()
+ ),
+ MsgHead::class.java
+ )
+ val request = response.document.map { doc -> doc.refDoc.content.any }.first().first()
+ assert(request is FinnUtbetalingListe)
+ }
+
+ @Test
+ fun canMarshalFaultInfo() {
+ val stelvioFault = ObjectFactory().createBrukerIkkeFunnet()
+ stelvioFault.errorMessage = "Ayylmaoo"
+ val brukerIkkeFunnetException = FinnUtbetalingListeBrukerIkkeFunnet("Ayylmaoo", stelvioFault)
+
+ val finnUtbetalingListeFeil = FinnUtbetalingListeFeil()
+ finnUtbetalingListeFeil.finnUtbetalingListebrukerIkkeFunnet = brukerIkkeFunnetException.faultInfo
+
+ val msgHeadRequest = utbetalingXmlMarshaller.unmarshal(msgHeadEksempel, MsgHead::class.java)
+ val msgHeadResponse = msgHeadResponse(
+ msgHeadRequest,
+ SendInRequest(
+ "my-message-id",
+ "my-conversation-id",
+ "my-payload-id",
+ msgHeadEksempel.toByteArray(),
+ Addressing(
+ Party(listOf(PartyId("org", "12345")), "mottaker"),
+ Party(listOf(PartyId("org", "67890")), "innsender"),
+ "Inntektsforesporsel",
+ "Inntektsforesporsel"
+ ),
+ EbmsProcessing()
+ ),
+ finnUtbetalingListeFeil
+ )
+
+ val feilElementString = String(
+ utbetalingXmlMarshaller.marshalToByteArray(msgHeadResponse)
+ )
+ println(feilElementString)
+ }
+
+ val msgHeadEksempel = "\n" +
+ "\n" +
+ " \n" +
+ " \n" +
+ " v1.2 2006-05-24\n" +
+ " 2024-06-17T08:31:10\n" +
+ " 309c5972-b5be-4b60-b172-094c5d236713\n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " Tromsø kommune\n" +
+ " \n" +
+ " \n" +
+ " 940101808\n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " 1234\n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " Økonomi og oppgjør\n" +
+ " \n" +
+ " 12345\n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " NAV Pensjon\n" +
+ " \n" +
+ " 889640782\n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " 12345\n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " Nordmann\n" +
+ " Ola\n" +
+ " \n" +
+ " 12345678965\n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " Veigaten 1\n" +
+ " 1234\n" +
+ " OSLO\n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " 12345678965\n" +
+ " PERSON\n" +
+ " \n" +
+ " KOMMUNE\n" +
+ " \n" +
+ " 2024-06-01\n" +
+ " 2024-06-12\n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ ""
+}
diff --git a/ebms-send-in/src/test/resources/inntektsforesporsel/inntektsforesporsel.xml b/ebms-send-in/src/test/resources/inntektsforesporsel/inntektsforesporsel.xml
new file mode 100644
index 00000000..4ad0ffea
--- /dev/null
+++ b/ebms-send-in/src/test/resources/inntektsforesporsel/inntektsforesporsel.xml
@@ -0,0 +1,89 @@
+
+
+
+ v1.2 2006-05-24
+ 2024-06-25T13:37:45
+
+
+
+ HELSEPLATTFORMEN AS
+
+ 8137980
+
+
+
+ Meldingsmottak
+
+ 8138375
+
+
+
+
+
+
+
+ NAV
+
+ 111949
+
+
+
+ 23
+
+
+
+
+
+
+
+
+
+
+
+
+ ***********
+ PERSON
+
+ KOMMUNE
+
+
+
+
+ 2024-04-01
+ 2024-04-30
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ v5V8tYBd24Ajyrr+Tc1h+e9eTOc=
+
+
+
+ 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
+
+
+
+
+
\ No newline at end of file
diff --git a/felles/src/main/kotlin/no/nav/emottak/melding/model/Payload.kt b/felles/src/main/kotlin/no/nav/emottak/melding/model/Payload.kt
index d04ead31..4c90a5b9 100644
--- a/felles/src/main/kotlin/no/nav/emottak/melding/model/Payload.kt
+++ b/felles/src/main/kotlin/no/nav/emottak/melding/model/Payload.kt
@@ -119,7 +119,7 @@ data class Addressing(
val service: String,
val action: String
) {
- fun replayTo(service:String,action:String): Addressing = Addressing( to = from.copy(), from = to.copy(), service , action)
+ fun replyTo(service:String, action:String): Addressing = Addressing( to = from.copy(), from = to.copy(), service , action)
}
@Serializable
diff --git a/settings.gradle.kts b/settings.gradle.kts
index e2b90848..3bc9f85b 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -56,7 +56,7 @@ dependencyResolutionManagement {
library("ktor-server-auth-jvm", "io.ktor:ktor-server-auth-jvm:2.3.8")
library("token-validation-ktor-v2", "no.nav.security:token-validation-ktor-v2:4.1.4")
library("flyway-core", "org.flywaydb:flyway-core:9.16.3")
- library("emottak-payload-xsd", "no.nav.emottak:emottak-payload-xsd:0.0.2")
+ library("emottak-payload-xsd", "no.nav.emottak:emottak-payload-xsd:0.0.5")
library("jaxb-runtime", "org.glassfish.jaxb:jaxb-runtime:2.4.0-b180830.0438")
library("cxf-rt-frontend-jaxws", "org.apache.cxf", "cxf-rt-frontend-jaxws").versionRef("cxf")
library("cxf-rt-transports-http", "org.apache.cxf", "cxf-rt-transports-http").versionRef("cxf")