Skip to content

Commit dc28102

Browse files
committed
Fjern CXF fra TilbakekrevingsClient
1 parent a1a1823 commit dc28102

File tree

28 files changed

+679
-358
lines changed

28 files changed

+679
-358
lines changed

client/src/main/kotlin/no/nav/su/se/bakover/client/ProdClientsBuilder.kt

+3-6
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ import no.nav.su.se.bakover.client.person.PersonClient
2323
import no.nav.su.se.bakover.client.person.PersonClientConfig
2424
import no.nav.su.se.bakover.client.skjerming.SkjermingClient
2525
import no.nav.su.se.bakover.client.sts.StsClient
26-
import no.nav.su.se.bakover.client.sts.StsSamlClient
2726
import no.nav.su.se.bakover.common.SU_SE_BAKOVER_CONSUMER_ID
27+
import no.nav.su.se.bakover.common.domain.auth.SamlTokenProvider
2828
import no.nav.su.se.bakover.common.infrastructure.config.ApplicationConfig
2929
import no.nav.su.se.bakover.common.infrastructure.jms.JmsConfig
3030
import no.nav.su.se.bakover.dokument.infrastructure.client.PdfClient
@@ -38,6 +38,7 @@ data class ProdClientsBuilder(
3838
private val jmsConfig: JmsConfig,
3939
private val clock: Clock,
4040
private val metrics: ClientMetrics,
41+
private val samlTokenProvider: SamlTokenProvider,
4142
) : ClientsBuilder {
4243

4344
override fun build(applicationConfig: ApplicationConfig): Clients {
@@ -117,11 +118,7 @@ data class ProdClientsBuilder(
117118
kodeverk = kodeverk,
118119
simuleringClient = SimuleringSoapClient(
119120
baseUrl = applicationConfig.oppdrag.simulering.url,
120-
samlTokenProvider = StsSamlClient(
121-
baseUrl = applicationConfig.clientsConfig.stsSamlUrl,
122-
serviceUser = serviceUser,
123-
clock = clock,
124-
),
121+
samlTokenProvider = samlTokenProvider,
125122
clock = clock,
126123
),
127124
utbetalingPublisher = UtbetalingMqPublisher(

client/src/main/kotlin/no/nav/su/se/bakover/client/oppdrag/simulering/SimuleringSoapClient.kt

+2-1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import arrow.core.flatMap
77
import arrow.core.getOrElse
88
import arrow.core.left
99
import no.nav.su.se.bakover.common.domain.auth.SamlTokenProvider
10+
import no.nav.su.se.bakover.common.infrastructure.soap.buildSoapEnvelope
1011
import no.nav.su.se.bakover.common.sikkerLogg
1112
import org.slf4j.LoggerFactory
1213
import økonomi.domain.simulering.Simulering
@@ -52,7 +53,7 @@ internal class SimuleringSoapClient(
5253
sikkerLogg.error("Feil ved simulering: Kunne ikke hente SAML-token for saksnummer: $saksnummer. soapBody: $soapBody")
5354
return SimuleringFeilet.TekniskFeil.left()
5455
}.toString()
55-
val soapRequest = buildXmlRequestSoapEnvelope(
56+
val soapRequest = buildSoapEnvelope(
5657
action = ACTION,
5758
messageId = UUID.randomUUID().toString(),
5859
serviceUrl = baseUrl,
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package no.nav.su.se.bakover.common.domain.extensions
2+
3+
fun Int.toStringWithDecimals(decimalPlaces: Int): String {
4+
if (decimalPlaces <= 0) return this.toString()
5+
return "$this.${"0".repeat(decimalPlaces)}"
6+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package no.nav.su.se.bakover.common.domain.extensions
2+
3+
import io.kotest.matchers.shouldBe
4+
import org.junit.jupiter.api.Test
5+
6+
internal class IntExKtTest {
7+
@Test
8+
fun `toStringWithDecimals should return the integer as a string with the specified number of decimal places`() {
9+
42.toStringWithDecimals(2) shouldBe "42.00"
10+
42.toStringWithDecimals(0) shouldBe "42"
11+
42.toStringWithDecimals(5) shouldBe "42.00000"
12+
}
13+
}

client/src/main/kotlin/no/nav/su/se/bakover/client/oppdrag/simulering/SimuleringSoapBuilder.kt common/infrastructure/src/main/kotlin/no/nav/su/se/bakover/common/infrastructure/soap/SoapEnvelopeBuilder.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
@file:Suppress("HttpUrlsUsage")
22

3-
package no.nav.su.se.bakover.client.oppdrag.simulering
3+
package no.nav.su.se.bakover.common.infrastructure.soap
44

5-
internal fun buildXmlRequestSoapEnvelope(
5+
fun buildSoapEnvelope(
66
action: String,
77
messageId: String,
88
serviceUrl: String,

test-common/src/main/kotlin/TilbakekrevingTestData.kt

+22
Original file line numberDiff line numberDiff line change
@@ -497,3 +497,25 @@ fun nyVurderinger(
497497
),
498498
),
499499
): Vurderinger = Vurderinger(perioderVurderinger)
500+
501+
/**
502+
* @param perioderVurderinger ignoreres dersom [vurderinger] sendes inn.
503+
*/
504+
fun vurderingerMedKrav(
505+
perioderVurderinger: Nel<Vurderinger.Periodevurdering> = nonEmptyListOf(
506+
Vurderinger.Periodevurdering(
507+
periode = januar(2021),
508+
vurdering = Vurdering.SkalTilbakekreve,
509+
),
510+
),
511+
vurderinger: Vurderinger = nyVurderinger(perioderVurderinger = perioderVurderinger),
512+
kravgrunnlag: Kravgrunnlag = kravgrunnlag(
513+
kravgrunnlagPåSakHendelseId = HendelseId.generer(),
514+
behandler = saksbehandler.toString(),
515+
),
516+
): VurderingerMedKrav {
517+
return VurderingerMedKrav.utledFra(
518+
vurderinger = vurderinger,
519+
kravgrunnlag = kravgrunnlag,
520+
).getOrFail()
521+
}

test-common/src/main/kotlin/application/HttpServerTestSetup.kt

+2
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import no.nav.su.se.bakover.hendelse.domain.HendelsekonsumenterRepo
3232
import no.nav.su.se.bakover.oppgave.domain.OppgaveHendelseRepo
3333
import no.nav.su.se.bakover.service.tilbakekreving.TilbakekrevingUnderRevurderingService
3434
import no.nav.su.se.bakover.test.applicationConfig
35+
import no.nav.su.se.bakover.test.auth.FakeSamlTokenProvider
3536
import no.nav.su.se.bakover.test.fixedClock
3637
import no.nav.su.se.bakover.test.jwt.asBearerToken
3738
import no.nav.su.se.bakover.test.jwt.jwtStub
@@ -98,6 +99,7 @@ fun Application.runApplicationWithMocks(
9899
brevService = brevService,
99100
tilbakekrevingConfig = tilbakekrevingConfig,
100101
dbMetrics = dbMetrics,
102+
samlTokenProvider = FakeSamlTokenProvider(),
101103
)
102104
},
103105
dokumentkomponenter: Dokumentkomponenter = mock(),
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
package no.nav.su.se.bakover.test.tilbakekreving
2+
3+
/**
4+
* Mottatt i preprod ved å sende en request til tilbakekreving med en ugyldig request (decimal på feil format)
5+
* Status 500.
6+
*/
7+
fun tilbakekrevingSoapResponseConversionError() = """
8+
<?xml version="1.0" encoding="UTF-8"?>
9+
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
10+
<SOAP-ENV:Body>
11+
<SOAP-ENV:Fault>
12+
<faultcode>SOAP-ENV:Server</faultcode>
13+
<faultstring>Conversion from SOAP failed</faultstring>
14+
<detail>
15+
<CICSFault xmlns="http://www.ibm.com/software/htp/cics/WSFault">DFHPI1009 08/02/2024 10:04:56 CICSQ1OS OSW8 85071 XML to data transformation failed. A conversion error (INVALID_CHARACTER) occurred when converting field belopTilbakekreves for WEBSERVICE tilbakekreving-v1-tjenestespesif.</CICSFault>
16+
</detail>
17+
</SOAP-ENV:Fault>
18+
</SOAP-ENV:Body>
19+
</SOAP-ENV:Envelope>
20+
""".trimIndent()
21+
22+
/**
23+
* Mottatt i preprod ved at vi allerede har sendt en request med samme vedtakId som har blitt godtatt.
24+
* Status 200.
25+
*/
26+
fun tilbakekrevingSoapResponseVedtakIdFinnesIkke() = """
27+
<?xml version="1.0" encoding="UTF-8"?>
28+
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
29+
<SOAP-ENV:Body>
30+
<tilbakekrevingsvedtakResponse xmlns="http://okonomi.nav.no/tilbakekrevingService/">
31+
<mmel xmlns="">
32+
<systemId xmlns="urn:no:nav:tilbakekreving:typer:v1">231-OPPD</systemId>
33+
<kodeMelding xmlns="urn:no:nav:tilbakekreving:typer:v1">B441012F</kodeMelding>
34+
<alvorlighetsgrad xmlns="urn:no:nav:tilbakekreving:typer:v1">08</alvorlighetsgrad>
35+
<beskrMelding xmlns="urn:no:nav:tilbakekreving:typer:v1">Oppgitt vedtak-id finnes ikke/har feil status: 0000625279</beskrMelding>
36+
<sqlKode xmlns="urn:no:nav:tilbakekreving:typer:v1" />
37+
<sqlState xmlns="urn:no:nav:tilbakekreving:typer:v1" />
38+
<sqlMelding xmlns="urn:no:nav:tilbakekreving:typer:v1" />
39+
<mqCompletionKode xmlns="urn:no:nav:tilbakekreving:typer:v1" />
40+
<mqReasonKode xmlns="urn:no:nav:tilbakekreving:typer:v1" />
41+
<programId xmlns="urn:no:nav:tilbakekreving:typer:v1">K231B441</programId>
42+
<sectionNavn xmlns="urn:no:nav:tilbakekreving:typer:v1">CA10-VALIDER-INPUT</sectionNavn>
43+
</mmel>
44+
<tilbakekrevingsvedtak xmlns="">
45+
<kodeAksjon xmlns="urn:no:nav:tilbakekreving:tilbakekrevingsvedtak:vedtak:v1" />
46+
<vedtakId xmlns="urn:no:nav:tilbakekreving:tilbakekrevingsvedtak:vedtak:v1">0</vedtakId>
47+
<kodeHjemmel xmlns="urn:no:nav:tilbakekreving:tilbakekrevingsvedtak:vedtak:v1" />
48+
<enhetAnsvarlig xmlns="urn:no:nav:tilbakekreving:tilbakekrevingsvedtak:vedtak:v1" />
49+
<kontrollfelt xmlns="urn:no:nav:tilbakekreving:tilbakekrevingsvedtak:vedtak:v1" />
50+
<saksbehId xmlns="urn:no:nav:tilbakekreving:tilbakekrevingsvedtak:vedtak:v1" />
51+
</tilbakekrevingsvedtak>
52+
</tilbakekrevingsvedtakResponse>
53+
</SOAP-ENV:Body>
54+
</SOAP-ENV:Envelope>
55+
""".trimIndent()

test-common/src/main/kotlin/xml/AssertXmlEquals.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,11 @@ fun String.shouldBeSimilarXmlTo(expectedXml: String, strict: Boolean = false) {
3434
* Kan si at builderen med node-matcher vil reagere på hvis dataen er feil - men builderen uten node matcher gir ikke feil om strukturen er feil
3535
*/
3636
private fun String.compareXmlWith(expectedXml: String, strict: Boolean): Pair<Diff, Diff> {
37-
val diffBuilderWithoutNodeMatcher = DiffBuilder.compare(this).withTest(expectedXml)
37+
val diffBuilderWithoutNodeMatcher = DiffBuilder.compare(expectedXml).withTest(this)
3838
.ignoreWhitespace()
3939
.withComparisonController(ComparisonControllers.StopWhenDifferent)
4040

41-
val diffBuilderWithNodeMatcher = DiffBuilder.compare(this).withTest(expectedXml)
41+
val diffBuilderWithNodeMatcher = DiffBuilder.compare(expectedXml).withTest(this)
4242
.ignoreWhitespace()
4343
.withNodeMatcher(DefaultNodeMatcher(ElementSelectors.byNameAndText))
4444
.withComparisonController(ComparisonControllers.StopWhenDifferent)

test-common/src/test/kotlin/xml/AssertXmlEqualsKtTest.kt

+8-8
Original file line numberDiff line numberDiff line change
@@ -10,47 +10,47 @@ class AssertXmlEqualsKtTest {
1010

1111
@Test
1212
fun `gir ut en forståelig feilmelding, dersom daten i XML'en ikke er lik`() {
13-
val xml1 = """
13+
val expected = """
1414
<person>
1515
<navn>Per</navn>
1616
<alder>30</alder>
1717
</person>
1818
""".trimIndent()
19-
val xml2 = """
19+
val actual = """
2020
<person>
2121
<navn>Per</navn>
2222
<alder>31</alder>
2323
</person>
2424
""".trimIndent()
2525

2626
assertThrows(AssertionError::class.java) {
27-
xml2 shouldBeSimilarXmlTo xml1
27+
actual shouldBeSimilarXmlTo expected
2828
}.message shouldBe """
2929
Expected XMLs to be similar, but found differences:
30-
Expected text value '31' but was '30' - comparing <alder ...>31</alder> at /person[1]/alder[1]/text()[1] to <alder ...>30</alder> at /person[1]/alder[1]/text()[1] (DIFFERENT)
30+
Expected text value '30' but was '31' - comparing <alder ...>30</alder> at /person[1]/alder[1]/text()[1] to <alder ...>31</alder> at /person[1]/alder[1]/text()[1] (DIFFERENT)
3131
""".trimIndent()
3232
}
3333

3434
@Test
3535
fun `gir ut en forståelig feilmelding, dersom strukturen i XML'en ikke er lik`() {
36-
val xml1 = """
36+
val expected = """
3737
<person>
3838
<navn>Per</navn>
3939
<alder>30</alder>
4040
</person>
4141
""".trimIndent()
42-
val xml2 = """
42+
val actual = """
4343
<person>
4444
<alder>30</alder>
4545
<navn>Per</navn>
4646
</person>
4747
""".trimIndent()
4848

4949
assertThrows(AssertionError::class.java) {
50-
xml2 shouldBeSimilarXmlTo xml1
50+
actual shouldBeSimilarXmlTo expected
5151
}.message shouldBe """
5252
Expected XMLs to be similar, but found differences:
53-
Expected element tag name 'alder' but was 'navn' - comparing <alder...> at /person[1]/alder[1] to <navn...> at /person[1]/navn[1] (DIFFERENT)
53+
Expected element tag name 'navn' but was 'alder' - comparing <navn...> at /person[1]/navn[1] to <alder...> at /person[1]/alder[1] (DIFFERENT)
5454
""".trimIndent()
5555
}
5656

tilbakekreving/domain/src/main/kotlin/tilbakekreving/domain/kravgrunnlag/Kravgrunnlag.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import no.nav.su.se.bakover.hendelse.domain.HendelseId
99
import java.math.BigDecimal
1010

1111
data class Kravgrunnlag(
12-
/** Se [tilbakekreving.domain.kravgrunnlag.KravgrunnlagDetaljerPåSakHendelse]*/
12+
/** Se [tilbakekreving.domain.kravgrunnlag.påsak.KravgrunnlagDetaljerPåSakHendelse]*/
1313
val hendelseId: HendelseId,
1414

1515
val saksnummer: Saksnummer,

tilbakekreving/infrastructure/src/main/kotlin/tilbakekreving/infrastructure/client/TilbakekrevingClients.kt

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package tilbakekreving.infrastructure.client
22

3-
import no.nav.su.se.bakover.common.domain.config.TilbakekrevingConfig
3+
import no.nav.su.se.bakover.common.domain.auth.SamlTokenProvider
44
import tilbakekreving.domain.vedtak.Tilbakekrevingsklient
55
import java.time.Clock
66

@@ -9,14 +9,14 @@ class TilbakekrevingClients(
99
) {
1010
companion object {
1111
fun create(
12-
tilbakekrevingConfig: TilbakekrevingConfig,
12+
baseUrl: String,
13+
samlTokenProvider: SamlTokenProvider,
1314
clock: Clock,
1415
): TilbakekrevingClients {
1516
return TilbakekrevingClients(
1617
tilbakekrevingsklient = TilbakekrevingSoapClient(
17-
tilbakekrevingPortType = TilbakekrevingSoapClientConfig(
18-
tilbakekrevingConfig = tilbakekrevingConfig,
19-
).tilbakekrevingSoapService(),
18+
baseUrl = baseUrl,
19+
samlTokenProvider = samlTokenProvider,
2020
clock = clock,
2121
),
2222
)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
@file:Suppress("HttpUrlsUsage")
2+
3+
package tilbakekreving.infrastructure.client
4+
5+
import arrow.core.Either
6+
import no.nav.su.se.bakover.common.domain.extensions.toStringWithDecimals
7+
import no.nav.su.se.bakover.common.ident.NavIdentBruker
8+
import no.nav.su.se.bakover.common.sikkerLogg
9+
import org.slf4j.LoggerFactory
10+
import tilbakekreving.domain.vedtak.KunneIkkeSendeTilbakekrevingsvedtak
11+
import tilbakekreving.domain.vurdering.PeriodevurderingMedKrav
12+
import tilbakekreving.domain.vurdering.VurderingerMedKrav
13+
import tilbakekreving.infrastructure.client.dto.AksjonsKode
14+
import tilbakekreving.infrastructure.client.dto.Skyld
15+
import tilbakekreving.infrastructure.client.dto.TilbakekrevingsHjemmel
16+
import tilbakekreving.infrastructure.client.dto.Tilbakekrevingsresultat
17+
import tilbakekreving.infrastructure.client.dto.TilbakekrevingsÅrsak
18+
import kotlin.math.max
19+
20+
private val log = LoggerFactory.getLogger("tilbakekreving.infrastructure.client.buildTilbakekrevingSoapRequest")
21+
22+
/**
23+
* Se: https://confluence.adeo.no/display/OKSY/Detaljer+om+de+enkelte+ID-koder
24+
* Se: https://github.com/navikt/tjenestespesifikasjoner/blob/master/tilbakekreving-v1-tjenestespesifikasjon/src/main/wsdl/no/nav/tilbakekreving/tilbakekreving-v1-tjenestespesifikasjon.wsdl
25+
*/
26+
internal fun buildTilbakekrevingSoapRequest(
27+
vurderingerMedKrav: VurderingerMedKrav,
28+
attestertAv: NavIdentBruker.Attestant,
29+
): Either<KunneIkkeSendeTilbakekrevingsvedtak, String> {
30+
return Either.catch {
31+
// TODO jah: Vurder om vi skal legge til datoVedtakFagsystem istedenfor å få dagens dato.
32+
"""
33+
<ns4:tilbakekrevingsvedtakRequest xmlns:ns2="urn:no:nav:tilbakekreving:typer:v1"
34+
xmlns:ns4="http://okonomi.nav.no/tilbakekrevingService/"
35+
xmlns:ns3="urn:no:nav:tilbakekreving:tilbakekrevingsvedtak:vedtak:v1">
36+
<tilbakekrevingsvedtak>
37+
<ns3:kodeAksjon>${AksjonsKode.FATT_VEDTAK.nummer}</ns3:kodeAksjon>
38+
<ns3:vedtakId>${vurderingerMedKrav.eksternVedtakId}</ns3:vedtakId>
39+
<ns3:kodeHjemmel>${TilbakekrevingsHjemmel.T}</ns3:kodeHjemmel>
40+
<ns3:renterBeregnes>N</ns3:renterBeregnes>
41+
<ns3:enhetAnsvarlig>8020</ns3:enhetAnsvarlig>
42+
<ns3:kontrollfelt>${vurderingerMedKrav.eksternKontrollfelt}</ns3:kontrollfelt>
43+
<ns3:saksbehId>$attestertAv</ns3:saksbehId>
44+
${
45+
vurderingerMedKrav.perioder.joinToString(separator = "\n") { periode ->
46+
"""
47+
<ns3:tilbakekrevingsperiode>
48+
<ns3:periode>
49+
<ns2:fom>${periode.periode.fraOgMed}</ns2:fom>
50+
<ns2:tom>${periode.periode.tilOgMed}</ns2:tom>
51+
</ns3:periode>
52+
<ns3:renterBeregnes>N</ns3:renterBeregnes>
53+
<ns3:belopRenter>0.00</ns3:belopRenter>
54+
<ns3:tilbakekrevingsbelop>
55+
<ns3:kodeKlasse>SUUFORE</ns3:kodeKlasse>
56+
<ns3:belopOpprUtbet>${periode.bruttoTidligereUtbetalt.toStringWithDecimals(2)}</ns3:belopOpprUtbet>
57+
<ns3:belopNy>${periode.bruttoNyUtbetaling.toStringWithDecimals(2)}</ns3:belopNy>
58+
<ns3:belopTilbakekreves>${periode.bruttoSkalTilbakekreve.toStringWithDecimals(2)}</ns3:belopTilbakekreves>
59+
<ns3:belopUinnkrevd>${periode.bruttoSkalIkkeTilbakekreve.toStringWithDecimals(2)}</ns3:belopUinnkrevd>
60+
<ns3:belopSkatt>${periode.skattSomGårTilReduksjon.toStringWithDecimals(2)}</ns3:belopSkatt>
61+
<ns3:kodeResultat>${
62+
when (periode) {
63+
is PeriodevurderingMedKrav.SkalIkkeTilbakekreve -> Tilbakekrevingsresultat.INGEN_TILBAKEKREV.toString()
64+
is PeriodevurderingMedKrav.SkalTilbakekreve -> Tilbakekrevingsresultat.FULL_TILBAKEKREV.toString()
65+
}
66+
}</ns3:kodeResultat>
67+
<ns3:kodeAarsak>${TilbakekrevingsÅrsak.ANNET}</ns3:kodeAarsak>
68+
<ns3:kodeSkyld>${
69+
when (periode) {
70+
is PeriodevurderingMedKrav.SkalIkkeTilbakekreve -> Skyld.IKKE_FORDELT.toString()
71+
is PeriodevurderingMedKrav.SkalTilbakekreve -> Skyld.BRUKER.toString()
72+
}
73+
}</ns3:kodeSkyld>
74+
</ns3:tilbakekrevingsbelop>
75+
<ns3:tilbakekrevingsbelop>
76+
<ns3:kodeKlasse>KL_KODE_FEIL_INNT</ns3:kodeKlasse>
77+
<ns3:belopOpprUtbet>0.00</ns3:belopOpprUtbet>
78+
<ns3:belopNy>${
79+
max(
80+
periode.bruttoSkalTilbakekreve,
81+
periode.bruttoSkalIkkeTilbakekreve,
82+
).toStringWithDecimals(2)
83+
}</ns3:belopNy>
84+
<ns3:belopTilbakekreves>0.00</ns3:belopTilbakekreves>
85+
<ns3:belopUinnkrevd>0.00</ns3:belopUinnkrevd>
86+
</ns3:tilbakekrevingsbelop>
87+
</ns3:tilbakekrevingsperiode>"""
88+
}
89+
}
90+
</tilbakekrevingsvedtak>
91+
</ns4:tilbakekrevingsvedtakRequest>
92+
""".trimIndent()
93+
}.mapLeft {
94+
log.error(
95+
"Feil ved sending av tilbakekrevingsvedtak: Klarte ikke serialisere requesten som vi skulle sende til Tilbakekrevingsmodulen (OS). Se sikkerlogg for mer kontekst.",
96+
RuntimeException("Trigger stacktrace"),
97+
)
98+
sikkerLogg.error(
99+
"Feil ved sending av tilbakekrevingsvedtak: Klarte ikke serialisere requesten som vi skulle sende til Tilbakekrevingsmodulen (OS). vurderingerMedKrav: $vurderingerMedKrav, attestertAv: $attestertAv",
100+
it,
101+
)
102+
KunneIkkeSendeTilbakekrevingsvedtak
103+
}
104+
}

0 commit comments

Comments
 (0)