SDK Innehållsspecifikation- Meddelande

Innehållsförteckning

Revisionshistorik

Version

Datum

Kommentar

Version

Datum

Kommentar

3.0.6 RC2 (2022)

2021-09-28

Specifikation uppdaterad utifrån DIGGs uppdaterade specifiktioner version 0.97.

  • Avsnitt 2.2  AS4 och XHE-profilering förtydligat gällande hantering av XHE.id

  • Avsnitt 3.2.2 MessageHeaderType gällande hantering av

    • meddelande-id

    • confidentiality

  • Avsnitt 3.2.2.3 AttentionDataType

    • AttentionPersonType, dokumentation uppdaterad för att match schema

    • Exempel uppdaterat

3.0.6 (2022)

2022-02-28

Beslutad version för Tjänsten Säker digital kommunikation.

 

1. Inledning

Syfte: Specifikationen SDK Innehållsspecifikation meddelande reglerar hur ett s.k. ostrukturerat SDK-meddelande skall utformas för att kunna utbytas mellan användarorganisationer som är anslutna till SDK-federationen.

Specifikationen beskriver dokumenttypen riv:infrastructure:messaging:MessageWithAttachments. Den utgör en kravspecifikation som skall fungera som ett teknikneutralt, formellt regelverk som reglerar integrationskrav för parter som avser att ansluta system för samverkan enligt denna dokumenttyp.

Kännetecknande för SDK-federationen är:

  • Utbyte av ostrukturerad information – fritext/dokument - PDF

  • Utbyte mellan (många) organisationer (B2B)

  • Känslig information (personuppgifter, uppgifter som kan omfattas av sekretess)

  • Domänöverskridande (hälso- och sjukvård, socialtjänst, skola, arbetsmarknad, osv.)

  • Interoperabilitet – främst teknisk och legal

Målet är att ge kunskap om hur SDK-komponenter som meddelandetjänst och meddelandeklient/verksamhetssystem skall anpassas för att kunna hantera SDK-meddelanden.

 

1.1 Referenser

I följande avsnitt anges länkar till ytterligare relevant dokumentation och en sammanställning av samtliga referenser som förekommer i dokumentet.

1.1.1. Stödjande externa dokument

Ref

Dokument-id

Dokumentlänk

Ref

Dokument-id

Dokumentlänk

R1

Inera, RIV Tekniska Anvisningar

http://rivta.se/documents

R2

Connecting Europe Facility (CEF)

https://ec.europa.eu/cefdigital/wiki/display/CEFDIGITAL

R3

CEF eDelivery

https://ec.europa.eu/cefdigital/wiki/display/CEFDIGITAL/eDelivery

R4

OASIS AS4 transportprotokoll

http://docs.oasis-open.org/ebxml-msg/ebms/v3.0/profiles/AS4-profile/v1.0/os/AS4-profile-v1.0-os.pdf

R6

CEF eDelivery AS4

https://ec.europa.eu/cefdigital/wiki/display/CEFDIGITAL/eDelivery+AS4

R7

Meddelandespecifikation: Meddelandekvittens

DIGGs informationspaket kan erhållas genom en förfrågan till DIGG via info@digg.se

R8

Kuverteringsprofil XHE

DIGGs informationspaket kan erhållas genom en förfrågan till DIGG via info@digg.se

R9

Transportprofil AS4

DIGGs informationspaket kan erhållas genom en förfrågan till DIGG via info@digg.se

R10

Certifikatspublicering - REST-bindning till SMP

DIGGs informationspaket kan erhållas genom en förfrågan till DIGG via info@digg.se

R11

Transportinfrastruktur– Kodlistor – Tekniska specifikationer

DIGGs informationspaket kan erhållas genom en förfrågan till DIGG via info@digg.se

 

1.1.2. Stödjande SDK-dokument

Ref

Dokument-id

Dokumentlänk

Ref

Dokument-id

Dokumentlänk

B1

SAD Säker digital kommunikation

SAD Säker digital kommunikation

B2

SDK Specifikation Validering, felhantering och kvittens

SDK Specifikation Validering, felhantering och kvittens

 

2. Övergripande arkitektur för informationsöverföring inom SDK

Detta kapitel refererar till flöden som är relevanta för informationsöverföring inom SDK.

 

Bilden illustrerar var i arkitekturen som SDK Innehållsspecifikation används. SDK-meddelandet paketeras i "nyttolast" och består av två element; XHE och MessageType (SDK Nyttolast).

2.1. Övergripande flöden

 

Ett meddelande skapas i meddelandetjänsten (t.ex. ärendehanteringssystem eller meddelandeapplikation).

 

Steg

Aktör

Beskrivning

Kommentar

Steg

Aktör

Beskrivning

Kommentar

1.Skapa meddelande

Organisation A

  • Meddelandetjänst (verksamhets- och meddelandelager)

I meddelandetjänsten skapas en meddelandestruktur enligt schema (XHE, MessageType) och paketeras i AS4.

  • AS4

    • MessagePayload (MessagePayloadType)

      • XHE

      • Message (MessageType)

Meddelandet skapas i en meddelandetjänst.

Steg 1 och steg 2 (steg 3) kan ske samtidigt.

2.Adressera

Organisation A

  • Meddelandetjänst

Användare(avsändaren) inom organisationen med tillgång till en SDK funktionsadress söker i en adressbok för att hitta anslutna organisationer och dess funktionsadresser.

Meddelandetjänsten kompletterar meddelandet med adressuppgifter (organisations-id, funktions-id).

Transportadressering:

  • AS4

    • originalSender (organisations-id)

    • finalRecipient (organisations-id)

Verksamhetsadressering:

  • MessageType

    • Recipient (organisations-id)

      • Attention.Function (funktions-id)

      • Attention.Person (Endast referens: person-id)

    • Sender (organisations-id)

      • Attention.Function (funktion-id)

      • Attention.Person (Endast referens: person-id)

  • XHE

    • Receiver (organisations-id)

    • Sender (organisations-id)

    • HandlingServiceID (funktions-id)

Användaren söker i en adressbok för att hitta anslutna organisationer och dess funktionsadresser. Detta kan ske antingen genom integration mot SDK Adressboks Sök-API eller genom en lokal läskopia.

Specifikationer:

  • Kuverteringsprofil XHE (Se R8)

  1. Kryptera och signera

Organisation A

  • Meddelandetjänst

Avsändande användarorganisation krypterar och signerar meddelandet.

  • Mottagande användarorganisationens krypteringsnyckel hämtas från SMP (CertPub)

  • Meddelandetjänsten Base64-kodar det färdiga meddelandet och överför det till Accesspunkten.

    • Hur ett meddelande överförs till accesspunkten är en produktspecifik fråga; olika ev. APIer kan erbjudas beroende på produkt.

Specifikationer:

  • Kuverteringsprofil XHE (Se R8)

  • Certifikatspublicering - REST-bindning till SMP (Se R10)

  1. Skicka meddelande

Organisation A

  • Accesspunkt (AP)

Avsändande Accesspunkt skickar meddelande enligt eDelivery-protokoll.

  • DNS ger transportadress till SMP

  • SMP ger transportadress AP

 

 

Organisation B

  • Accesspunkt (AP)

Mottagande Accesspunkt tar emot meddelande för vidare leverans.

Intern routing skall baseras på:

  • Organisations-id

  • Funktions-id

 

  1. Status

Organisation B

  • Accesspunkt (AP)

Transportkvittering: Mottagande Accesspunkt bekräftar överföring synkront enligt eDelivery-protokoll.

  • SignalMessage innehåller bl.a. MessageId

 

  1. Validering och kvittering

 

Organisation B

  • Meddelandetjänst

Meddelandekvittering: Mottagande organisations meddelandetjänst validerar meddelande samt kvitterar meddelande.

  1. Ursprungskontroll: Validerar sändarens signatur enligt XHE specifikation.

  2. Dekrypterar meddelande

    • Ursprungskontroll meddelande: Genom kontroll mot SMP(CertPub) kan mottagaren kontrollera att sändarens identitet är korrekt (Organisations-id)

  3. Kvittering sker när meddelandet är validerat (Se B2) och har nått mottagande organisations meddelandetjänst.

    • Kvitteringsmeddelanden skall endast signeras (ej krypteras)

  4. Kvittering sker genom att meddelandetjänsten skickar ett kvitteringsmeddelande meddelande till avsändaren.

Observera att kvittensmeddelande skall skapas enligt DIGGs specifikation Meddelandekvittens (R7).

Överföring till mottagande organisations meddelandetjänst är nu garanterad.

Specifikationer:

  • Meddelandespecifikation: Meddelandekvittens (Se R7)

    • för utformning av meddelandekvittens

  • Certifikatspublicering - REST-bindning till SMP (Se R10)

  • SDK Specifikation Validering, felhantering och kvittens (Se B2)

    • för tillämpning av SDKs regelverk

 

 

2.2  AS4 och XHE-profilering

Avsnittet beskriver vilken information som skall anges i AS4 och XHE för denna meddelandetyp (dokumenttyp).

  • Överföring av meddelanden sker enligt Transportprofil AS4 (Se R9).

  • Meddelanden paketeras enligt Kuverteringsprofil XHE (R8) och Kodlistor (R11)

Följande anpassning skall göras för SDK Meddelande

2.2.1   Transportprofilering med AS4

Konfigurering

AS4

Konfigurering

AS4

Dokumenttyp

 

Messaging

  • UserMessage

    • CollaborationInfo.action

Värde: busdox-docid-qns::urn:riv:infrastructure:messaging:MessageWithAttachments:3::messagePayload##3.0::tm-base-ext-sigenc

1 <Action>busdox-docid-qns::urn:riv:infrastructure:messaging:MessageWithAttachments:3::messagePayload##3.0::tm-base-ext-sigenc</Action>

Service (Process)

Messaging

  • UserMessage

    • CollaborationInfo.service

Type = urn:fdc:digg.se:edelivery:process

Värde = bdx:noprocess

1 <Service type="urn:fdc:digg.se:edelivery:process">bdx:noprocess</Service>

 

2.2.3 Meddelandekuvertering med XHE

SDK Meddelanden skall kuverteras i enlighet med DIGGs XHE specifikation

Konfigurering

XHE

Konfigurering

XHE

  • Unik identifierare

    • ID

  • Datum

    • CreationDateTime

Unikt identifierare av meddelandet/nyttolast.

  • ID: Unik identifierare. Ska vara samma som för nyttolasten

  • CreationDateTime: Datum när XHE skapadess. Kan vara samma som för nyttolasten.

 

1 2 3 4 5 6 <XHEVersionID>1.0</XHEVersionID> <xha:Header> <ID>862693f7-53d4-4d96-b35c-470055710092</ID> <CreationDateTime>2019-08-15T17:52:58.1Z</CreationDateTime> .. <xha:Header>

invariant | In $path, Timestamp should match pattern "YYYY-MM-DD'T'hh:mm:ss.s'Z'" but was <value-of select="."/>.

  • Avsändare

    • FromParty

  • Mottagare

    • ToParty

FromParty.PartyIdentification

  • Sändande användaroganisation (Organisations-id)

    • SKA vara samma som AS4 originalSender

    • SKA vara samma som MessageType.MessageHeaderType.SenderType

ToParty.PartyIdentification

  • Mottagande användarroganisation (Organisations-id)

    • SKA vara samma som AS4 finalRecipient

    • SKA vara samma som MessageType.MessageHeaderType.RecipientType

1 2 3 4 5 6 7 8 9 10 <xha:FromParty> <xha:PartyIdentification> <ID schemeID="iso6523-actorid-upis">0203:habo.se</ID> </xha:PartyIdentification> </xha:FromParty> <xha:ToParty> <xha:PartyIdentification> <ID schemeID="iso6523-actorid-upis">0203:arbetsformedlingen.se</ID> </xha:PartyIdentification> </xha:ToParty>

 

Meddelandets struktur

Payloads.Payload.DocumentTypeCode

  • SKA motsvara rotelementet dvs “Q{urn:riv:infrastructure:messaging:MessageWithAttachments:3}messagePayload”

Payloads.Payload.ContentTypeCode

  • SKA sättas till “application/xml“

1 2 3 4 <xha:Payloads> <xha:Payload> <DocumentTypeCode>Q{urn:riv:infrastructure:messaging:MessageWithAttachments:3}messagePayload</DocumentTypeCode> <ContentTypeCode>application/xml</ContentTypeCode>

Funktionsadress (egen identifierare)

Payloads.Payload.HandlingServiceID

Nyttolastens funktionsadress, kan används för att underlätta meddelandehantering i meddelandetjänst/meddelandeväxel.

  • Mottagarens Id för att identifiera funktion/enheter.

    • SKA vara samma som attention.subOrganization.organizationId.extension

    • SKA även sättas i XHE kuvert på kvittensmeddelandet för detta meddelande.

1 2 3 4 5 6 7 <xha:Payloads> <xha:Payload> <DocumentTypeCode>Q{urn:riv:infrastructure:messaging:MessageWithAttachments:3}messagePayload</DocumentTypeCode> <ContentTypeCode>application/xml</ContentTypeCode> <HandlingServiceID>sub-funktion-org-id</HandlingServiceID> <InstanceEncryptionIndicator>true</InstanceEncryptionIndicator> <xha:PayloadContent>

Meddelanden kvitteras enligt DIGGs specifikation meddelandekvittens. Se R7.

Kvittenskod: REJECTED

Orsakskod: BV

Detaljkod: not-found

Detaljtext: Wrong or unknown xha:HandlingServiceID

 

3       Meddelandemodeller

3.1       Övergripande beskrivning

SDK Innehållsspecifikation definierar metadata samt innehållet (nyttolast) för SDK-meddelanden som skickas mellan anslutna användarorganisationer.

 

 

3.2       Meddelandestruktur - MessageType

Samtliga fält skall hanteras och valideras av komponenterna Meddelandetjänst (MT) och Meddelandeklient/Verksamhetssystem (MK).

Bilden illustrerar hur SDK Innehållsspecifikation är strukturerad.

 

SDK meddelande exempel:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 <tns:messagePayload> <tns:Message xmlns:tns="urn:riv:infra:messaging:MessageWithAttachments:3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:riv:infra:messaging:MessageWithAttachments:3 ../core_components/infra_messaging_MessageWithAttachments_3.0.xsd "> <tns:messageHeader> <tns:creationDateTime>2019-08-15T17:52:58.1Z</tns:creationDateTime> <tns:messageId>ff325210-0690-42fe-b86f-95ecab821223</tns:messageId> <tns:conversationId>a8480ada-6a1f-44a3-a960-9acaf4efcdcd</tns:conversationId> <tns:label>Rubrik: Kallelse till SIP möte</tns:label> <tns:confidentiality>false</tns:confidentiality> <tns:generatingSystem> <tns:root>kodverk-id</tns:root> <tns:extension>system-id-123456789</tns:extension> </tns:generatingSystem> <tns:recipient> <tns:recipientID> <tns:root>iso6523-actorid-upis</tns:root> <tns:extension>0203:arbetsformedlingen.se</tns:extension> </tns:recipientID> <tns:label>Arbetsförmedlingen</tns:label> <tns:attention> <tns:subOrganization> <tns:organizationId> <tns:root>urn:riv:infra:messaging:functionalAddress</tns:root> <tns:extension>sub-funktion-org-id</tns:extension> </tns:organizationId> <tns:label>Avdelningen för Arbetsträning</tns:label> </tns:subOrganization> </tns:attention> </tns:recipient> <tns:sender> <tns:senderID> <tns:root>iso6523-actorid-upis</tns:root> <tns:extension>0203:habo.se</tns:extension> </tns:senderID> <tns:label>Håbo kommun</tns:label> <tns:attention> <tns:person> <tns:personId> <tns:root>1.2.752.29.6.2.1</tns:root> <tns:extension>SE2321000016-person</tns:extension> </tns:personId> <tns:label>Karin Svensson</tns:label> </tns:person> <tns:subOrganization> <tns:organizationId> <tns:root>urn:riv:infra:messaging:functionalAddress</tns:root> <tns:extension>SE2321000016-SubOrgUnit-id</tns:extension> </tns:organizationId> <tns:label>Socialtjänsten Håbo kommun</tns:label> </tns:subOrganization> </tns:attention> </tns:sender> </tns:messageHeader> <tns:messageBody> <tns:documents> <tns:documentID>SDK meddelande</tns:documentID> <tns:documentName>Rubrik: Kallelse till SIP möte</tns:documentName> <tns:index>1</tns:index> <tns:ContentText> <tns:characterSequence>Textmeddelande. Vi bör diskutera hur formatering skall ske. T.ex. markdown eller html.</tns:characterSequence> </tns:ContentText> </tns:documents> </tns:messageBody> </tns:Message> <messagePayload>


3.2  MessagePayloadType

MessagePayloadType utgör meddelandets container.

3.2.1  MessageType

MessageType utgör meddelandet. Typen innehåller metadata samt meddelande och dess bilagor.

Attribut

typ

Beskrivning

Kardinalitet

Attribut

typ

Beskrivning

Kardinalitet

../message

(MessageType)

MessageType

 

 

messageHeader

MessageHeaderType

Bärare av metadata

1..1

messageBody

MessageBodyType

Bärare av innehåll (text, bilaga)

1..1

3.2.2 MessageHeaderType

Används för meddelande-id och adresseringsinformation

Struktur

  • MessageType

    • MessageHeaderType 1..1

Exempel:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 <tns:messageHeader> <tns:creationDateTime>2019-08-15T17:52:58.1Z</tns:creationDateTime> <tns:messageId>ff325210-0690-42fe-b86f-95ecab821223</tns:messageId> <tns:conversationId>a8480ada-6a1f-44a3-a960-9acaf4efcdcd</tns:conversationId> <tns:refToMessageId>ff325210-0690-42fe-b86f-95ecab821223</tns:refToMessageId> <tns:label>Rubrik: Kallelse till SIP möte</tns:label> <tns:confidentiality>false</tns:confidentiality> <tns:generatingSystem> <tns:root>kodverk-id</tns:root> <tns:extension>system-id-123456789</tns:extension> </tns:generatingSystem> <tns:recipient> .. </tns:recipient> <tns:sender> .. </tns:sender> </tns:messageHeader>

 

Attribut

Typ

Beskrivning

Kardina-litet

Attribut

Typ

Beskrivning

Kardina-litet

../messageHeader

(MessageHeaderType)

 

 

 

creationDateTime

dateTime

Tidsstämpel för när meddelandet skapades. Tidszon UTC skall användas.

T.ex. 2018-09-12T15:06:00Z

Meddelanden kvitteras enligt DIGGs specifikation meddelandekvittens. Se R7.

Kvittenskod: REJECTED

Orsakskod: SV

Detaljkod: structure

Detaljtext: cvc-datatype-valid.1.2.1: '3 Sept. 2019' is not a valid value for 'dateTime'

Meddelanden kvitteras enligt DIGGs specifikation meddelandekvittens. Se R7.

Kvittenskod: REJECTED

Orsakskod: BV

Detaljkod: invariant

Detaljtext: In $path, Timestamp should match pattern "YYYY-MM-DD'T'hh:mm:ss.s'Z'" but was '2019-09-03T12:04:13.123' | at path {path till element}

1..1

messageId

String

Unik identifierare (UUID) av meddelande.

  • Meddelande-id (messageid) SKA vara samma som XHE.ID

Ska följa RFC4122. Se https://tools.ietf.org/html/rfc4122

Meddelanden kvitteras enligt DIGGs specifikation meddelandekvittens. Se R7.

Kvittenskod: REJECTED

Orsakskod: BV

Detaljkod: invariant

Detaljtext: In ns:RefToMessageId, 'teststring..' is not a valid UUID. | at path {path till element}

1..1

conversationId

String

Skapas av sändande system. Unik identifierare (UUID).

Notera att även AS4 eb:CollaborationInfo.ConversationId SKA sättas till samma värde som ConversationId.

“ConversationId” används för att koppla meddelanden i en konversation. Ett “ConversationId“ kan återanvändas i meddelandeutbyte mellan olika mottagare.

Vid ny konversation/nytt meddelande:

  • Samma värde används som för messageId eller ett nytt id skapas

Besvara meddelade:

  • ConversationId sätts till samma värde som i meddelandet som besvaras (ConversationId återanvänds).

Komplettera meddelande

  • ConversationId sätts till samma värde som i meddelandet som kompletteras (ConversationId återanvänds).

Meddelanden kvitteras enligt DIGGs specifikation meddelandekvittens. Se R7.

Kvittenskod: REJECTED

Orsakskod: BV

Detaljkod: invariant

Detaljtext: In ns:messageHeader, conversationId must be set. If this is a new message, use the same UUID as messageId to start new conversation

Meddelanden kvitteras enligt DIGGs specifikation meddelandekvittens. Se R7.

Kvittenskod: REJECTED

Orsakskod: BV

Detaljkod: invariant

Detaljtext: In ns:RefToMessageId, 'teststring..' is not a valid UUID.

Meddelandeklient(MK) skall hantera värdet.

1..1

refToMessageId

String

Används inte för meddelanden som inte är svar på annat meddelande.

RefToMessageId sätts av sändande system när ett meddelande besvaras. RefToMessageId ska sättas till messageId för meddelandet som besvaras.

Ger stöd för att se ordningsföljd i konversationstrådar, samt att koppla samman meddelandekvittenser med meddelandet.

  • Om ett värde skickas skall det valideras och hanteras i klient.

  • Meddelandeklient(MK) skall hantera ordningsföljd mellan meddelanden baserat på värdet.

Meddelanden kvitteras enligt DIGGs specifikation meddelandekvittens. Se R7.

Kvittenskod: REJECTED

Orsakskod: BV

Detaljkod: invariant

Detaljtext: In ns:RefToMessageId, 'teststring..' is not a valid UUID.

0..1

label

String

Meddelandets rubrik. Max 256 tecken.

  • Meddelandeklient(MK) skall hantera meddelandets rubrik

Meddelanden kvitteras enligt DIGGs specifikation meddelandekvittens. Se R7.

Observera att innehåll i sträng EJ får returneras i “Detaljtext“.

Kvittenskod: REJECTED

Orsakskod: BV

Detaljkod: structure

Detaljtext: In tns:messageHeader/tns:label, string length {antal tecken} exceeded maxlength 256 at {path to element}

1..1

confidentiality

 

Boolean

Kommunicerar sändande organisations sekretessmarkering.

Syftet med markeringen är upplysande till mottagaren att avsändande organisation har bedömt detta som känsligt (t.ex känsliga personuppgifter).

  • True = Sekretessmarkering

  • False = Ingen sekretessmarkering

Meddelandeklient(MK) skall hantera värdet.

1..1

generatingSystem

IIType

Identifierare för systemet som skapade/genererade meddelandet. Id kan användas för felsökning/support.

Regelverk IIType:

  • root = kodverk för identifierare

    • Identifierare är oreglerad

  • extension = id.

0..1

recipient

recipientType

Bärare av metadata för mottagande organisation

1..1

sender

senderType

Bärare av metadata för sändande organisation

1..1

3.2.2.1 RecipientType

Innehåller innehåller information om mottagande organisation.

Struktur

  • MessageType

    • MessageHeaderType 1..

      • RecipientType 1..1

Exempel:

1 2 3 4 5 6 7 8 9 10 <tns:recipient> <tns:recipientId> <tns:root>iso6523-actorid-upis</tns:root> <tns:extension>0203:arbetsformedlingen.se</tns:extension> </tns:recipientId> <tns:label>Arbetsförmedlingen</tns:label> <tns:attention> .. </tns:attention> </tns:recipient>

 

Attribut

Typ

Beskrivning

Kardina-litet

Attribut

Typ

Beskrivning

Kardina-litet

../recipient

(RecipientType)

 

 

 

recipientId

IIType

Mottagande organisation (organisations-id).

Tillämpas enligt specifikation.

  • Identifierare av organisation SKA vara samma värde som

    • AS4 header:

      • Messaging

        • UserMessage

          • MessageProperties

            • finalRecipient

    • XHE:

      • ToParty.PartyIdentification

Regelverk IIType:

  • root = kodverk för identifierare

    • Använd: iso6523-actorid-upis

  • extension = “0203:” + organisations-id i form av domännamn.

  • Värdet i extension SKALL valideras programmatiskt i meddelandetjänst för att säkerställa korrekt adressering. Täcks inte av schema/schematron. 

Meddelanden kvitteras enligt DIGGs specifikation meddelandekvittens. Se R7.

Kvittenskod: REJECTED

Orsakskod: BV

Detaljkod: security

Detaljtext: recipientId is not identical to value in XHE envelope.

Meddelanden kvitteras enligt DIGGs specifikation meddelandekvittens. Se R7.

Kvittenskod: REJECTED

Orsakskod: BV

Detaljkod: invariant

Detaljtext: In ns:root, value should be set to ‘iso6523-actorid-upis' but was 'teststring’.

1..1

label

String

Tillämpas enligt specifikation. Organisationens namn. Max 256 tecken.

  • Mappas mot adressbokens attribut för organisationsnamn (organizations "name")

  • Om ett värde skickas skall Meddelandeklient(MK) hantera värdet.

Meddelanden kvitteras enligt DIGGs specifikation meddelandekvittens. Se R7.

Kvittenskod: REJECTED

Orsakskod: SV

Detaljkod: structure

Detaljtext: cvc-maxLength-valid: Value 'teststring..' with length = '468' is not facet-valid with respect to maxLength '256' for type '#AnonType_labelMessageHeaderType'. string to long.

0..1

attention

attentionDataType

Bärare av metadata för funktionsadress och refererad person. Se avsnitt "3.3.2.3 AttentionDataType" för detaljerad information.

1..1

3.2.2.2 SenderType

Innehåller information om sändande organisation.

Struktur

  • MessageType

    • MessageHeaderType 1..1
      SenderType 1..1

Exempel:

1 2 3 4 5 6 7 8 9 10 <tns:sender> <tns:senderId> <tns:root>iso6523-actorid-upis</tns:root> <tns:extension>0203:habo.se</tns:extension> </tns:senderId> <tns:label>Håbo kommun</tns:label> <tns:attention> .. </tns:attention> </tns:sender>

 

Attribut

Typ

Beskrivning

Kardi-nalitet

Attribut

Typ

Beskrivning

Kardi-nalitet

../sender

(SenderType)

 

 

 

senderId

IIType

Sändande organisation.

Tillämpas enligt specifikation.

  • Identifierare av organisation SKA vara samma värde som

    • AS4 header:

      • Messaging

        • UserMessage

          • MessageProperties

            • originalSender

    • XHE

      • FromParty.PartyIdentification

  • Kontroll av avsändare (gäller vid tillämpning av organisatonsidentifierare iso6523:0203)

    • SKALL vara samma toppdomän i “PartyInfo.From.PartyId” och “MessageProperties Property name="originalSender

    • SKALL kontrollera mot SMP att originalSender är registrerad i federationen (ParticipantIdentifier)

Regelverk IIType:

  • root = kodverk för identifierare

    • Använd: iso6523-actorid-upis

  • extension = “0203:” + organisations-id i form av domännamn.

Validering:

  • Värdet i extension SKA valideras programmatiskt i meddelandetjänst för att säkerställa korrekt adressering. Täcks inte av schema/schematron. 

  • Meddelandets XHE signatur SKA valideras mot DIGGs SMP (CertPub) tjänst.

    • Signaturen SKA motsvara Organisations-id registrerad i Certifikatspubliceringstjänst (CertPub) tjänst.

 

Meddelanden kvitteras enligt DIGGs specInnehållsvalidering - Kodning av kvitteringsmeddelandeifikation meddelandekvittens. Se R7.

Kodning av kvitteringsmeddelande där senderId inte validerats OK:

Kvittenskod: REJECTED

Orsakskod: BV

Detaljkod: invariant

Detaljtext: Wrong or unknown sender-id

Meddelanden kvitteras enligt DIGGs specifikation meddelandekvittens. Se R7.

Kodning av kvitteringsmeddelande där Meddelandets XHE signatur inte validerats OK:

Kvittenskod: REJECTED

Orsakskod: SIG

Detaljkod: security

Detaljtext: Sender signature not validated

Kodning av kvitteringsmeddelande där schematronvalidering returnerar error:

Kvittenskod: REJECTED

Orsakskod: BV

Detaljkod: invariant

Detaljtext: In ns:root should be set to 'iso6523-actorid-upis' but was 'Icke godkänt kodverk'. | {path till element}

1..1

label

String

Tillämpas enligt specifikation. Max 256 tecken

  • Mappas mot adressbokens attribut för organisationsnamn (t.ex.organizationalUnitName)

  • Om ett värde skickas skall Meddelandeklient(MK) hantera värdet.

Meddelanden kvitteras enligt DIGGs specifikation meddelandekvittens. Se R7.

Kvittenskod: REJECTED

Orsakskod: SV

Detaljkod: structure

Detaljtext: cvc-maxLength-valid: Value 'teststring..' with length = '468' is not facet-valid with respect to maxLength '256' for type '#AnonType_labelMessageHeaderType'. string to long.

0..1

attention

attentionDataType

Bärare av metadata för funktionsadress och refererad person. Se avsnitt "3.3.2.3 AttentionDataType" för detaljerad information.

1..1

3.2.2.3 AttentionDataType

Används för att adressera funktion/enhet och referera person (Sändare/mottagare).

Struktur

  • MessageType

    • MessageHeaderType 1..1

      • SenderType/RecipientType 1..1

        • AttentionType 0..1

Exempel:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 <tns:attention> <tns:person> <tns:personId> <tns:root>1.2.752.29.6.2.1</tns:root> <tns:extension>SE2321000016-person</tns:extension> </tns:personId> <tns:label>Karin Svensson</tns:label> </tns:person> <tns:subOrganization> <tns:OrganizationId> <tns:root>urn:riv:infra:messaging:functionalAddress</tns:root> <tns:extension>SE2321000016-SubOrgUnit-id</tns:extension> </tns:OrganizationId> <tns:label>Socialtjänsten Håbo kommun</tns:label> </tns:subOrganization> <tns:reference> <tns:referenceId> <tns:root>37.3.818.dummy</tns:root> <tns:extension>02ae6023-658c-43e7-bb5c-4d79ecddf20e</tns:extension> </tns:referenceId> <tns:label>Recipient Or Sender reference-id</tns:label> </tns:reference> </tns:attention>

 

Attribut

Typ

Beskrivning

Kardi-nalitet

Attribut

Typ

Beskrivning

Kardi-nalitet

../attention (AttentionDataType)

 

 

 

../attention/person/PersonId (AttentionPersonType)

AttentionPersonType

identifierare för mottagande person (sender eller recipient). Attributet utelämnas om det saknas en unik identifierare.

Regelverk IIType:

  • root = kodverk för identifierare (användarorganisationens identifierare)

    • Exempel:.

      • Personnummer: 1.2.752.129.2.1.3.1 

      • Hsa-id person: 1.2.752.29.6.2.1

      • E-post: 0.9.2342.19200300.100.1.3

      • Övrig "slask" oid: 1.2.752.129.2.1.2.1

  • extension = personal-id.

    • Ex: SE2321000016-nnnnn

Övrigt

  • Det finns idag inga krav på att endast mottagande PersonId får ta del av meddelandet. Adressering får endast ske på funktionsnivå.

    • PersonId ingår ej i gemensam adressbok

  • Om ett värde skickas skall Meddelandeklient(MK) hantera värdet.

0..*

../attention/person/label

String

Personens fullständiga namn (fullname). Max 256 tecken

T.ex. Karin Svensson

  • Om ett värde skickas skall Meddelandeklient(MK) hantera värdet.

Meddelanden kvitteras enligt DIGGs specifikation meddelandekvittens. Se R7.

Kvittenskod: REJECTED

Orsakskod: SV

Detaljkod: structure

Detaljtext: cvc-maxLength-valid: Value 'teststring..' with length = '468' is not facet-valid with respect to maxLength '256' for type '#AnonType_labelMessageHeaderType'. string to long.

0..1

../attention/subOrganization

(SubOrganizationType)

SubOrganizationType

Funktion/Enhet

1..1

../attention/subOrganization/organizationId

IIType

Id för att identifiera funktion/enheter.

  • Hämtas från SDK adressbok "identifier"

Regelverk IIType:

  • root = urn:riv:infra:messaging:functionalAddress

  • extension = Identifierare för funktionsbrevlåda 

    • Ex(hämtas från adressboken): SE2321000016-nnnnn

Meddelanden kvitteras enligt DIGGs specifikation meddelandekvittens. Se R7.

Kvittenskod: REJECTED

Orsakskod: BV

Detaljkod: not-found

Detaljtext: Wrong or unknown ns:subOrganization/ns:organizationId

Meddelanden kvitteras enligt DIGGs specifikation meddelandekvittens. Se R7.

Kvittenskod: REJECTED

Orsakskod: BV

Detaljkod: invariant

Detaljtext: In ns:organizationId, element ns:root must be set to ‘urn:riv:infra:messaging:functionalAddress’ | at {path to element}

Meddelanden kvitteras enligt DIGGs specifikation meddelandekvittens. Se R7.

Kvittenskod: REJECTED

Orsakskod: BV

Detaljkod: security

Detaljtext: ns:subOrganization/ns:organizationId must equal xha:HandlingServiceID

1..1

../attention/subOrganization/label

String

Funktion/enhetens namn. Max 256 tecken

T.ex. Socialtjänsten i Håbo

  • Hämtas från SDK adressbok

Om ett värde skickas skall Meddelandeklient(MK) hantera värdet.

Meddelanden kvitteras enligt DIGGs specifikation meddelandekvittens. Se R7.

Kvittenskod: REJECTED

Orsakskod: SV

Detaljkod: structure

Detaljtext: cvc-maxLength-valid: Value 'teststring..' with length = '468' is not facet-valid with respect to maxLength '256' for type '#AnonType_labelMessageHeaderType'. string to long.

 

0..1

../attention/reference

(ReferenceType)

 

 

0..*

../attention/reference/referenceId

IIType

Referens-id. T.ex. ärende-id eller diarienummer. Referens-id underlättar för sändare och mottagare att koppla meddelandet till lokala ärenden/handlingar. Max 256 tecken.

Regelverk IIType:

  • root = kodverk för identifierare (organisationens interna eller gemensam identifierare)

    • T.ex.

      • Diarienummer: dnr

      • GLN: 1.3.88

      • Svenskt personnummer(PNR): 1.2.752.129.2.1.3.1

      • Samordningsnummer(SNR): 1.2.752.129.2.1.3.3

      • Nationell reservidentitet(NRID): 1.2.752.74.9.1

      • Övriga/okänd: unregistred

  • extension = id

    • Ex: 7362220000318

Om referens-id används för Sender

  • Sändaren bifogar sitt referens-id t.ex. diarienummer.

    • Mottagaren skall returnera sändarens referens-id vid svar.

Om referens-id används för recipient

  • Mottagarens referens-id anges. Detta id kan hämtas från föregående meddelande dvs det meddelandet som besvaras.

Om ett värde skickas skall Meddelandeklient(MK) hantera värdet.

1..1

../attention/reference/label

String

Namn/etikett på internt referens-id.

Om ett värde skickas skall Meddelandeklient(MK) hantera värdet.

0..1

3.2.3 MessageBodyType

Innehåller nyttolasten i form av meddelandetext och bilagor.

Struktur

  • MessageType

    • MessageBodyType 1..1

Exempel:

1 2 3 4 5 <tns:messageBody> <tns:documents> .. </tns:documents> </tns:messageBody>

 

Attribut

Typ

Beskrivning

Kardi-nalitet

Attribut

Typ

Beskrivning

Kardi-nalitet

../messageBody

(MessageBodyType)

 

 

 

./Documents

DigitalDocumentType

Bärare av textmeddelande och bilaga.

1..*

3.2.3.1 DigitalDocumentType

Innehåller en eller flera dokument (fritext eller bilaga).

Struktur

  • MessageType

    • MessageBodyType 1..1

      • DigitalDocumentType 1..*

Exempel:

1 2 3 4 5 6 7 8 9 10 11 12 <tns:documents>       <tns:documentID>SDK meddelande</tns:documentID>       <tns:documentName>Rubrik: Kallelse till SIP möte</tns:documentName>       <tns:index>1</tns:index> <tns:ContentFiles> .. <tns:ContentFiles> <tns:ContentText> .. </tns:ContentText> </tns:documents>

 

Attribut

Typ

Beskrivning

Kardi-nalitet

Attribut

Typ

Beskrivning

Kardi-nalitet

../documents

(DigitalDocumentType)

 

 

 

documentID

String

Identifierare av dokument. Skapas av sändaren.

0..1

documentName

String

Dokumentets namn.

Om ett värde skickas skall det valideras och hanteras i klient.

0..1

Index

String

Sorteringsordning. Om flera documents(DigitalDocumentType) skickas skall sorteringsordning sättas. Detta för att underlätta informationsutbyte då presentationsordning. Siffror skall användas. 1 representerar den första.

0..1

../contentFiles

contentAsBase64Type

Bärare av filer

0..*

../contentText

contentAsTextType

Bärare av textmeddelande

0..*

3.2.3.2 ContentAsTextType

Fritextmeddelande.

Struktur

  • MessageType

    • MessageBodyType 1..1

      • DigitalDocumentType 1..*

        • contentAsTextType 0..*

Exempel:

1 2 3 <tns:ContentText>       <tns:characterSequence>Textmeddelande. Formateras med markdown.</tns:characterSequence> </tns:ContentText>

 

Attribut

Typ

Beskrivning

Kardi-nalitet

Attribut

Typ

Beskrivning

Kardi-nalitet

../contentText

(ContentAsText)

 

 

 

characterSequence

1..1

Fritext (UTF-8).

Text kan formateras med följande MarkDown koder enligt RFC 7763.

Headers:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 # H1 ## H2 ### H3 #### H4 ##### H5 ###### H6 Strong/bold **xyz** __xyz__ Italic: *xyz* _xyz_ Bullet: * xyz Number: 1. 2. *Two or more line breaks* This is the first line This is the second line --- *Two or more spaces, and then type return* This is the first line This is the second line

Grafiskt gränssnitt i meddelandeklient (verksamhetssystem) tjänst skall rendera ovanstående MarkDown-koder.

Om ett värde skickas skall Meddelandeklient(MK) hantera värdet.

1..1

3.2.3.3 ContentAsBase64

Base64-kodad bilaga.

Struktur

  • MessageType

    • MessageBodyType 1..1

      • DigitalDocumentType 0..*

        • contentAsBase64Type 0..*

Exempel:

1 2 3 4 5 <tns:ContentFiles> <tns:fileName>testpdf.pdf</tns:fileName> <tns:contentType>application/pdf</tns:contentType> <tns:content>AkbCRUEBoI5wj9hBHCNFGBqE90IoYQecRcYimxj.... </tns:ContentFiles>

 

Attribut

Typ

Beskrivning

Kardi-nalitet

Attribut

Typ

Beskrivning

Kardi-nalitet

../ContentFiles (ContentAsBase64Type)

 

Bifogas flera element skall dessa hanteras enligt valfri sortering.

 

fileName

String

Bilagans filnamn. Filnamnet bör visas i meddelandetjänsten.

1..1

contentType

String

Typ av bilaga som överförs. MIME-typ för bifogad fil skall anges.

  • Endast PDF får användas dvs: application/pdf

    • Endast arkivbeständig PDF får överföras (PDF version 1.4 eller senare)

      • Arkivbeständigt format skall användas, Enligt riksarkivet:

        • PDF-A1

        • PDF-A2

Meddelanden kvitteras enligt DIGGs specifikation meddelandekvittens. Se R7.

Kvittenskod: REJECTED

Orsakskod: BV

Detaljkod: not-supported

Detaljtext: In contentType, The value 'PNG' is not allowed. | at {path to element}

1..1

content

String

Base64-kodad bilaga (UTF-8). Den binära informationen skall kodas med base64 enligt RFC 4648

Filer får ej överstiga 30 MB.

Meddelanden kvitteras enligt DIGGs specifikation meddelandekvittens. Se R7.

Kvittenskod: REJECTED

Orsakskod: BV

Detaljkod: too-long

Detaljtext: Message size to large.

1..1



4 Innehållsvalidering

Innehållsvalidering finns för att i så stor mån som möjligt säkerställa problemfri kommunikation mellan samtliga parter i SDK federationen. Schema och Schematron bilagorna till detta dokument realiserar dom gemensamma valideringsregler som finns. Valideringsreglerna är framtagna utifrån dom regler som är specificerat i meddelandemodeller.

För att säkerställa transporten av SDK-meddelande skall Meddelandetjänst validera meddelande.

  • SDK-Meddelande skall valideras med bifogade schema och schematron filer.

  • SDK-Meddelande skall valideras på utgående försändelse.

  • SDK-Meddelande skall valideras på inkommande meddelanden.

    • Avsändaren SKA valideras

4.1 Schematronregler

Schematron är ett regelbaserat valideringsspråk för att göra påståenden om förekomsten eller frånvaron av mönster i XML-träd. Schematron reglerna är en utökning av schemat och validerar meddelandeinnehållet utifrån innehållsspecifikation.

4.3 Felhantering och kvittens

Vid inkommande meddelande skall meddelandetjänst hantera valideringsfel genom att i retur skicka ett kvittensmeddelande enligt DIGGs specifikation DIGG eDelivery – Meddelandespecifikation: Meddelandekvittens (Se R7).

4.4 Exempel på valideringskoder - Meddelandetjänst (Validering av mottaget meddelande)

Tabellen avser exempel på händelser som primärt behöver hanteras av meddelandetjänst (meddelandelagret).

  • Aktör skapar kvittensmeddelandet och felhanteringsmeddelandet enligt DIGG eDelivery – Meddelandespecifikation: Meddelandekvittens (R7).

Händelse (exempel)

Kvittenskod

Orsakskod

Detaljkod

Kommentar

Händelse (exempel)

Kvittenskod

Orsakskod

Detaljkod

Kommentar

1

Meddelandet mottaget och validerat utan avvikelser

ACCEPTED

-

-

Meddelandet mottaget, kvitterat och validerat utan avvikelser.

2

Meddelandekuvertets struktur och i förekommande fall innehåll kodverksregler etc.

REJECTED

SV

structure

Meddelandet är strukturellt (xsd) felaktigt eller är korrupt.

  • Felaktig datatyper etc

3

Kontroll mot skadlig kod i nyttolast.

REJECTED

BV

forbidden

Felkod REJECTED skall genereras av mottagaren i de fall det är möjligt. En incident behöver skapas om skadlig kod upptäcks.

Skalskydd i form av antivirussystem kan förhindra filhantering genom t.ex. att sätta meddelande i "karantän".

4

Storleksvalidering (storlek)

REJECTED

BV

too-long

Storleksöverträdelse över fastställd storlek (f.n. > 30mb för hela meddelandet) skall generera ett stoppande fel (REJECTED)

5

Logisk schema validering (schematron)

REJECTED

BV

invariant

Logiska regler eller kodverk följs ej (schematron)

  • T.ex. typning är felaktig eller saknas.

6

MessageId är ej unikt

REJECTED

BV

duplicate

multiple-matches

 

7

refToMessageId finns ej

ACCEPTED

-

-

 Meddelandet kvitteras med ACCEPTED.

8

Filtyp (SDK Innehållsspecifikation - contentAsBase64)

REJECTED

BV

Not-supported

 

Meddelandet skall ej kvitteras, felkod REJECTED. Enligt tidigare beslut skall PDF vara av typen PDF-A1/PDF-A2 (Enligt riksarkivet rekommendation).

9

Funktionsadress finns ej

REJECTED

BV

Not-found

Funktionsadress finns ej eller är felaktigt

10

Meddelande kan ej levereras

REJECTED

BV

exception

Meddelandet kan ej levereras till mottagare av funktionsadress.

11

referens till meddelande (refToMessageId) som är markerat som REJECTED.

REJECTED

BV

not-supported

Meddelandet kan ej levereras och kvitteras pga att meddelandet är marketat som felaktigt (t.ex. pga sändarens time-out).

12

Felaktig avsändare - Sändarens XHE signatur

REJECTED

SIG

security

Avsändarinformation (organisations-id) är felaktig eller matchar ej XHE-signatur.

13

Felaktig avsändare - Angiven avsändare felaktig

REJECTED

BV

security

Avsändarinformation är felaktig eller matchar ej.

  • Kvittens returneras med detaljer om originalSender inte matchar med avsändande accesspunkts konfiguration.

  • Vid scenariot att avsändande organisation inte finns registrerad i SMP bör inte kvittens skickas eftersom kvittensen inte kommer levereras msspunkt.