Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.

...

TitelAuftrag (Providerwechsel / Verbundleistung) anlegen
Kurzbeschreibung

Folgender Ablauf beschreibt die typischen API Interaktionen zwischen dem aufnehmenden Auftrageber (EKPauf und TNBauf, aka AGauf), dem Leistungserbringer (LE, aka ANE) und dem abgebenden Auftraggeber (EKPab und TNBab, aka ABab) für die Anwendungsfälle "Auftrag (Providerwechsel / Verbundleistung) anlegen - Schlechtfall Negative RespondProviderChange (RUEM-PV)".

Zu diesen Anwendungsfall sind zwei Sequenzen relevant:

  • Die Vorabstimmung
  • Die Durchführung
Vorbedingung
  • Rahmenverträge und Dienstverträge sind vorhanden
  • Der Auftraggeber hat die Verfügbarkeit des Produktes geprüft
  • der AGab abgebende Auftraggeber hat sich beim LE Leistungserbringer für Kündigungen durch den Leistungserbringer registriert (siehe  Auftrag (Kündigung durch LE, GF PV/VBL) anlegen )
Auslöser

Der aufnehmende Auftraggeber legt einen Auftrag für den Providerwechsel bzw. die Verbundleistung beim Leistungserbringer (ANE) an.

Schlechtfall: Der abgebende Provider Auftraggeber lehnt die Anfrage zum Providerwechsel ab (im Beispiel mit der Begründung: falsche Vorabstimmungs-ID)

Ergebnis

Nach Eingang der negativen RespondProviderChange (RUEM-PV) wird der Auftag wird seitens des Leistungserbringers abgebrochen - Status Rejected

Der Leistungserbringer sendet an den aufnehmenden Provider Auftraggeber ein StateChangeEvend "Rejected" (ABBM)

Der Leistungserbringer sendet an den abgebenden Provider Auftraggeber ein StateChangeEvend "Rejected" (ABBM-PV), hier nicht dargestellt

Ablauf

Codeblock
languagetext
collapsetrue
@startuml
autonumber
    
box Product Order vom Typ PV (PO)
participant eauf as "EKP auf + TNB auf (AG auf)"
participant tauf as "ANE (LEauf)"
    
box  (Sub)Product Order vom Typ KUE-LE (PO2)
participant leab as "ANE (LEab)"
participant tab as "TNB ab + EKPab (AG ab)" 
    
eauf -> tauf: POST ProductOrder(productOrderItemCreate, VAId)
note right: PV
 
eauf <- tauf: ProductOrderStatusChangeEvent(PO, Acknowleged)
tauf -> leab: notifyKUE
leab -> leab: POST  ProductOrder(productOrderItemDelete, category=KUE-LE)
 
leab -> tab: ProductOrderCreatedEvent(PO)
tab <- leab: ProductOrderStateChangeEvent(PO, Acknowleged)
tab <- leab: ProductOrderAttributeValueChangeEvent(PO, providerChangeInfo, date)
leab -> tab: ProductOrderStateChangeEvent(PO, Pending)
note right: AKM-PV
leab -> tab: ProductOrderInformationRequiredEvent(PO, fieldPath=productOrder.ProviderChangeResult.approval)
 
leab <- tab: POST RespondProviderChange(PO, result.approval=false)
note right: RUEM-PV
leab -> tab: RespondProviderChangeStateChangedEvent(acknowledged)
leab -> tab: RespondProviderChangeStateChangedEvent(inProgress)
leab -> tab: ProductOrderAttributeValueChangeEvent(PO, productOrder.ProviderChangeResult.approval=false)
leab -> tab: RespondProviderChangeStateChangedEvent(done)
note right: Ablehnung der RespondProviderChange durch LE
leab -> tab: ProductOrderStateChangeEvent(PO, Rejected)
tauf <- leab: notifyPVRejected
eauf <- tauf: ProductOrderStatusChangeEvent(PO, Rejected)
@enduml

//www.plantuml.com/plantuml/png/dPH1Szem48Nl_XKxEU4fvD1ZfdJYffuE0mqU8BxBrcBKof8hhsZvzvNbk4I5a25SCFQ-jz_RjRXlYHcojOoO9QriNQ29m7sYGl-1p6XkIuAbuMXWhslO71h8SXXbopXgd5AKec6A09dT0clX9frdq5r_WCtZ5tyrIhvrt_5D8A11a3ocC5galkBO6KPhMyJd-y-VqiaYxHW-XX0IMH5u5YTD--SUhN2CZfOLFQ6hXRw_ppBvx17l85kkDyCWFCUeUV5ZHbW_66I4OyYJ6OyZfGd1Y6f7Jfj7ptQV9hrTuBGcHhPzs35LORf7HIxI69BofzA_9LRetAXdyT7km7cBxS7bZtpKuNxFU1doAqhi84k7McbpcFPJZ2FuvqMi2FdwO7n0wsWAbyGtFKs25u9Sa2P4HXIMC6VIddYu67lHeVZxCxNLO-2CC0wftsJ9K76Xgd0zoVpx9CjVT-hQcPgHq6g5lwmmo8-EMu6IPunsqvUZliq2u1MsLj8jQxeSJ0xJxb-7ON6kgD6AXqhVmuJowPR95iCCgwVqDCHPn-DSXXZiUK7SR-Wz3aAvYifXjg7-kWs_FRqW_dj0kLRut_8BYJjbLGLETju6k3Nb3XRfbI_R2dzWISFnTSiEZc-M3y-l-si8ZEzHSLlBlm00
Img
src
Bitbucket file macro
urlhttps://bitbucket.org/fit-api/fit-api/src/main/tmf622/assets/ProviderChange_NegativeRespondProviderChange.puml
syntaxHighlightingPlantUML

Beispieldaten (linker Block, TNBauf ↔ ANE)

...

Erweitern
titleProductOrderStateChangeEvent: Acknowledged Accepted - identisch zum Gutfall

siehe Auftrag (Providerwechsel / Verbundleistung) anlegen , Abschnitt "Beispieldaten (linker Block, TNBauf ↔ ANE)", Kapitel "ProductOrderStateChangeEvent: AcknowledgedAccepted"

ProductOrderAttributeValueChange (19)

Bitbucket file macro
collapsibletrue
urlhttps://bitbucket.org/fit-api/fit-api/src/main/tmf622/examples/product-order-provider-change-2b-attribute-value-change-event-failed-validation.json
syntaxHighlightingJSON

Farbcodierung:

rote Schriftfarbe = Abweichungen im Vergleich zum Event ProductOrderAttributeValueChange aus dem Gutfall im Vorfeld des ProductOrderStateChange inProgress

fachliche FelderDatenAPI Felder
technisches EventDatum 2022-05-11T10:33:00+01:00eventTime
Pointer auf die gemachte Änderung

/providerChangeInfo

/relatedParty/

/expectedCompletionTimePeriod

/agreement/

/productOrderItem/1/product/transportInterconnectionPoint

/productOrderItem/1/product/cvlan

/productOrderItem/1/product/accessLineId

...

fieldPath.path

fieldPath.typeOfChange = add

Supplier-Daten
Rolle orderManagementSupplierContactorderManagementSellerContactrelatedParty.role
AnredeFraurelatedParty.salutation
VornameLisarelatedParty.givenName
NachnameBachrelatedParty.familyName
Telefonnummer0221/789456

relatedParty/contactMedium.mediumType = phone "PhoneContactMedium"

relatedParty/contactMedium/characteristic.contactType = "fixed"

relatedParty/contactMedium/characteristic.phoneNumber 

Mobilfunknummer0178/78787878

relatedParty/contactMedium.mediumType = phone "PhoneContactMedium"

relatedParty/contactMedium/characteristic.contactType = "mobile"

relatedParty/contactMedium/characteristic.phoneNumber 

Email-adresseAdressel.bach@example.net

relatedParty/contactMedium.mediumType = email "EmailContactMedium"

relatedParty/contactMedium/characteristic.contactType = "email"

relatedParty/contactMedium/characteristic.emailAddress

Daten vom abgebenden Provider
RollehandingOverProvider

relatedParty.role

ProvidernameDEU.1UND1

1&1 Internet AG

relatedParty.name

Zustimmung ProviderwechselFALSE

productOrder/providerChangeInfo.approval

AntwortcodeKVE

productOrder/providerChangeInfo.responseReason[0].code

AntworttextVorabstimmungs-ID fehlerhaft

productOrder/providerChangeInfo.responseReason[0].description

Abgabedatum2022-12-16T12:00:00+01:00
weitere Daten
Vertragsnummer 555001

ProductOrder/agreement.businessId
ProductOrder/agreement.agreementType="singleContract"

verbindlicher Liefertermin (Datum)2022-12-16T12:00:00+01:00
(Uhrzeit fachlich nicht relevant, aber technisch erforderlich)

expectedCompletionDate

verbindlicher Liefertermin (Zeitfenster)

2022-12-16T08:00:00+01:00

2022-12-16T12:00:00+01:00

productOrderItem.appointment.validFor.startDateTime

productOrderItem.appointment.validFor.endDateTime

Termin beim Endkunden erforderlichTRUE

ProductOrderItem.customerAppointmentIsNecessary

Anschluss (a10nsp)4711productOrderItem/product.transportInterconnectionPoint
Anschluss (port)4productOrderItem/product.port
Anschluss (s-vlan)3120productOrderItem/product.svlan
Anschluss (c-vlan)7productOrderItem/product.cvlan
Anschluss (lineId)DEU.DTAG.FTYLIQ7PFTproductOrderItem/product.accessLineId
Anschluss (uebergabepunktKunde)TAEproduct.accessTerminationInterface

ProductOrderStateChangeEvent: rejected

...

ProductOrderStateChangeEvent: rejected (19+1)

Bitbucket file macro
collapsibletrue
urlhttps://bitbucket.org/fit-api/fit-api/src/main/tmf622/examples/product-order-provider-change-3b-state-change-event-rejected.json
syntaxHighlightingJSON

ProductOrderStateChangeEvent: rejected
fachliche FelderDaten API Felder
Orderstatus rejectedstate 
fachliches Änderungsdatum 2022-05-20T10:40:00+01:00stateChangeDate 
technisches EventDatum2022-05-20T10:40:00+01:00eventTime
Grund der Änderung

0041

"Der abgebende Provider hat die Kündigung seines Bestandes abgelehnt."

stateChangeReason.code

stateChangeReason.description

Historisierung acknowledged

fachliches Änderungsdatum 

Grund der Änderung

2022-05-11T10:31:00+01:00

0000

"Keine Änderung zum Auftrag"

stateChangeHistory.@type = StateChange

stateChangeHistory.changeDate

stateChangeHistory.changeReason.code

stateChangeHistory.changeReason.description