...
Titel | Auftrag (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:
|
Vorbedingung |
|
Auslöser | Der aufnehmende Auftraggeber legt einen Auftrag für den Providerwechsel bzw. die Verbundleistung beim Leistungserbringer (ANE) an. Schlechtfall:Am Schalttag kann die Bereitstellung nicht erfolgen. |
Ergebnis | Der Leistungserbringer fordert beim aufnehmenden Provider Auftraggeber einen neuen Termin an (Status "Pending" - Information Required (TAM)) Der Leistungserbringer sendet an den abgebenden Provider Auftraggeber eine Verzögerungsmeldung (ProcessingMessage JeopardyMessage "OrderDelayorderDelay", (VZM-PV)) Nach erfolgter Terminverschiebung durch den aufnehmenden Provider Auftraggeber sendet der Leistungserbringer an den abgebenden Provider Auftraggeber eine Information über den neuen Bereitstellungstermin: ProcessingMessage MilestoneEvent "orderConfirmationUpdate", (erneute ABM-PV) Der weitere Verlauf wird hier nicht mehr betrachtet. |
...
Variante erfolgreiche Schaltung nach Terminanforderung
Img | src | |
---|---|---|
Bitbucket file macro | ||
|
Codeblock | ||||
---|---|---|---|---|
| ||||
@startuml
autonumber
box TMF622 Product Order, category=PV
participant eauf as "Buyer of new line: Ordering"
participant tauf as "Seller of new line: Product Order"
participant taufr as "Seller of new line: Reschedule Product Order"
box TMF622 Product Order, category=TerminationProvider
participant leab as "Seller of old line: Product Order"
participant tab as "Buyer of old line: Ordering"
eauf -> tauf: POST ProductOrder(productOrderItemCreate, VAId)
eauf <-- tauf: 201 Created(acknowledged)
note right: PV
eauf <- tauf: ProductOrderStatusChangeEvent(PO, Accepted)
note right: QEB
tauf -> leab: notifyKUE
note over leab, tab: Die Sequenz [[https://confluence.t-systems-mms.eu/pages/viewpage.action?pageId=547957140 Auftrag (Kündigung durch LE, GF PV/VBL) anlegen]] wird hier inkludiert
leab ->tauf:notifyRUEM-PV(approval, reason)
eauf <- tauf: POST ProductOrderAttributeValueChangeEvent()
note right: e.g.: expectedCompletionDate
eauf <- tauf: ProductOrderStateChangeEvent(PO,InProgress)
note right: ABM
tauf -> leab:notifyInProgress
leab -> tab:POST ProductOrderAttributeValueChangeEvent()
note right: e.g.: expectedCompletionDate
leab -> tab: ProductOrderStatusChangeEvent(PO2, InProgress)
note right: ABM-PV
eauf <- tauf: ProductOrderStateChangeEvent(PO,pending)
note right: TAM
tauf -> leab:notifyDelayed
leab -> tab: ProductOrderProcessingMessageEvent(PO2, delayMessage)
note right: VZM-PV
eauf <- tauf: ProductOrderInformationRequiredEvent(PO,requestedCompletionDate)
eauf -> taufr: POST RescheduleProductOrder
eauf <-- taufr: 201 Created(acknowledged)
eauf <- taufr: POST RescheduleProductOrderStateChangeEvent(inProgress)
eauf <- tauf: POST ProductOrderAttributeValueChangeEvent(PO, requestedCompletionDate)
eauf <- taufr: POST RescheduleProductOrderStateChangeEvent(done)
eauf <- tauf: POST ProductOrderAttributeValueChangeEvent()
note right: e.g.: expectedCompletionDate
eauf <- tauf: ProductOrderStateChangeEvent(PO,InProgress)
note right: ABM
tauf -> leab:notifyInProgress
leab -> tab:POST ProductOrderAttributeValueChangeEvent()
note right: e.g.: expectedCompletionDate
leab -> tab: ProductOrderStatusChangeEvent(PO2, InProgress)
note right: ABM-PV
eauf <- tauf: ProductOrderStateChangeEvent(PO,Completed)
note right: ERLM
tauf -> leab:notifyCompleted
leab -> tab: ProductOrderStatusChangeEvent(PO2, Completed)
note right: ERLM-PV
eauf <- tauf: POST ProductOrderAttributeValueChangeEvent()
note right: e.g.: productOrderItem.product.startDate
eauf <- tauf: ProductOrderStateChangeEvent(PO,Closed)
note right: ENTM
tauf -> leab:notifyClosed
leab -> tab: POST ProductOrderAttributeValueChangeEvent()
note right: e.g.: productOrderItem.product.endDate
leab -> tab: ProductOrderStatusChangeEvent(PO2, Closed)
note right: ENTM-PV |
alter Ablauf
Codeblock | ||
---|---|---|
| ||
@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, Accepted)
tauf -> leab: notifyKUE
note over leab, tab: Die Sequenz [[https://confluence.t-systems-mms.eu/pages/viewpage.action?pageId=547957140#Auftrag(K%C3%BCndigungdurchLE,GFPV/VBL)anlegen-HappyPath Auftrag (Kündigung durch LE, GF PV/VBL, Happy path) anlegen]] wird hier includiert
leab ->tauf:notifyRUEM-PV(approval, reason)
eauf <- tauf: ProductOrderStateChangeEvent(PO,InProgress)
tauf -> leab:notifyInProgress
leab -> tab: ProductOrderStatusChangeEvent(PO2, InProgress)
note right: ABM-PV
eauf <- tauf: ProductOrderStateChangeEvent(PO,pending)
tauf -> leab:notifyDelayed
leab -> tab: ProductOrderProcessingMessageEvent(PO2, delayMessage)
note right: VZM-PV
eauf <- tauf: ProductOrderInformationRequiredEvent(PO,requestedCompletionDate)
eauf -> tauf: POST RescheduleProductOrder
eauf <- tauf: POST RescheduleProductOrderStateChangeEvent(acknowledged, inProgress)
eauf <- tauf: POST ProductOrderAttributeValueChangeEvent(PO, requestedCompletionDate)
eauf <- tauf: POST RescheduleProductOrderStateChangeEvent(done)
eauf <- tauf: ProductOrderAttributeValueChange(PO, expectedCompletionDate, appointment)
eauf <- tauf: ProductOrderStateChangeEvent(PO,InProgress)
tauf -> leab:notifyInProgress
leab -> tab: ProductOrderAttributeValueChange(PO2, expectededCompletionDate)
leab -> tab: ProductOrderProcessingMessage(PO2,orderConfirmationUpdate)
note right: ABM-PV
eauf <- tauf: ProductOrderStateChangeEvent(PO,Completed)
tauf -> leab:notifyInCompleted
leab -> tab: ProductOrderStatusChangeEvent(PO2, Completed)
note right: ERLM-PV
eauf <- tauf: ProductOrderStateChangeEvent(PO,Closed)
tauf -> leab:notifyInClosed
leab -> tab: ProductOrderStatusChangeEvent(PO2, Closed)
note right: ENTM-PV
@enduml |
Img | ||
---|---|---|
|
Beispieldaten (linker Block, TNBauf ↔ ANE)
...
title | 1) Post ProductOrder (providerChange) - identisch zum Gutfall |
---|
...
title | 2) ProductOrderStateChangeEvent: Accepted - identisch zum Gutfall |
---|
...
title | vor 5) ProductOrderAttributeValueChange - identisch zum Gutfall |
---|
...
title | 5) ProductOrderStateChangeEvent: inProgress - identisch zu Gutfall und Geschäftsfall Neu |
---|
8) ProductOrderStateChangeEvent: pending
Stashincludebyfilepath | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
ProductOrderStateChangeEvent: pending | ||
fachliche Felder | Daten | API Felder |
Orderstatus | pending | state |
fachliches Änderungsdatum | 2022-12-16T11:30:00+01:00 | stateChangeDate |
technisches EventDatum | 2022-12-16T11:30:00+01:00 | eventTime |
Grund der Änderung | 6001 "Endkunde nicht angetroffen" | stateChangeReason.code stateChangeReason.description |
11) ProductOrderInformationRequiredEvent
Stashincludebyfilepath | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
...
/requestedCompletionDate
replace
...
fieldPath.path
fieldPath.typeOfChange
12) POST RescheduleProductOrder
Stashincludebyfilepath | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
...
2022-12-19T12:00:00+01:00
...
rescheduledRequestedCompletionDate
...
2022-12-19T08:00:00+01:00
2022-12-19T12:00:00+01:00
...
productOrderItem.requestedTimeSlot.validFor.startDateTime
productOrderItem.requestedTimeSlot.validFor.endDateTime
13a) POST RescheduleProductOrderStateChangeEvent: accepted
Stashincludebyfilepath | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
...
13b) POST RescheduleProductOrderStateChangeEvent: inProgress
Stashincludebyfilepath | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
...
14) POST ProductOrderAttributeValueChangeEvent
Stashincludebyfilepath | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
...
event.productOrder.requestedCompletionDate
...
2022-12-19T08:00:00+01:00
2022-12-19T12:00:00+01:00
...
event.productOrder.productOrderItem.requestedTimeSlot.validFor.startDateTime
event.productOrder.productOrderItem.requestedTimeSlot.validFor.endDateTime
15) POST RescheduleProductOrderStateChangeEvent: done
Stashincludebyfilepath | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
...
16) ProductOrderAttributeValueChangeEvent
Stashincludebyfilepath | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
...
event.productOrder.expectedCompletionDate
...
2022-12-19T08:00:00+01:00
2022-12-19T12:00:00+01:00
...
event.productOrder.productOrderItem.appointment.validFor.startDateTime
event.productOrder.productOrderItem.appointment.validFor.endDateTime
17) ProductOrderStateChangeEvent: inProgress
Stashincludebyfilepath | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
ProductOrderStateChangeEvent: inProgress | ||
fachliche Felder | Daten | API Felder |
Orderstatus | inProgress | state |
fachliches Änderungsdatum | 2022-12-16T11:40:30+01:00 | stateChangeDate |
technisches EventDatum | 2022-12-16T11:40:30+01:00 | eventTime |
Grund der Änderung | 0011 "Montage beim Endkunden erforderlich." | stateChangeReason.code stateChangeReason.description |
21) ProductOrderStateChangeEvent: completed
Stashincludebyfilepath | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
ProductOrderStateChangeEvent: completed | ||
fachliche Felder | Daten | API Felder |
Orderstatus | completed | state |
fachliches Änderungsdatum | 2022-12-19T10:00:00+01:00 | stateChangeDate |
technisches EventDatum | 2022-12-19T10:00:00+01:00 | eventTime |
Grund der Änderung | 0010 "Auftrag ausgeführt." | stateChangeReason.code stateChangeReason.description |
vor 24) ProductOrderAttributeValueChange
Stashincludebyfilepath | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
ProductOrderAttributeValueChange (setzen von startDate) | ||
fachliche Felder | Daten | API Felder |
technisches EventDatum | 2022-12-19T10:00:30+01:00 | eventTime |
Nutzungsdatum | 2022-12-19T10:00:00+01:00 | product.startDate |
24) ProductOrderStateChangeEvent: closed
Stashincludebyfilepath | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
ProductOrderStateChangeEvent: closed | ||
fachliche Felder | Daten | API Felder |
Orderstatus | closed | state |
fachliches Änderungsdatum | 2022-12-19T10:01:00+01:00 | stateChangeDate |
technisches EventDatum | 2022-12-19T10:01:00+01:00 | eventTime |
Grund der Änderung | 0010 "Auftrag ausgeführt." | stateChangeReason.code stateChangeReason.description |
Variante LineInUse
Codeblock | ||
---|---|---|
| ||
@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
note over leab, tab: Die Sequenz [[https://confluence.t-systems-mms.eu/pages/viewpage.action?pageId=547957140#Auftrag(K%C3%BCndigungdurchLE,GFPV/VBL)anlegen-HappyPath Auftrag (Kündigung durch LE, GF PV/VBL, Happy path) anlegen]] wird hier includiert
leab ->tauf:notifyRUEM-PV(approval, reason)
eauf <- tauf: ProductOrderStateChangeEvent(PO,InProgress)
tauf -> leab:notifyInProgress
leab -> tab: ProductOrderStatusChangeEvent(PO2, InProgress)
note right: ABM-PV
eauf <- tauf: ProductOrderStateChangeEvent(PO,pending)
tauf -> leab:notifyInPending
leab -> tab: ProductOrderProcessingMessageEvent(PO2, delayMessage)
note right: VZM-PV
eauf <- tauf: ProductOrderInformationRequiredEvent(PO,requestedCompletionDate)
eauf -> tauf: POST CloseProductOrder
eauf <- tauf: POST CloseProductOrderStateChangeEvent(acknowledged, inProgress, done)
eauf <- tauf: ProductOrderStateChangeEvent(PO,InProgress)
eauf <- tauf: ProductOrderStateChangeEvent(PO,Completed)
tauf -> leab:notifyInCompleted
leab -> tab: ProductOrderStatusChangeEvent(PO2, Completed)
note right: ERLM-PV
eauf <- tauf: ProductOrderStateChangeEvent(PO,Closed)
tauf -> leab:notifyInClosed
leab -> tab: ProductOrderStatusChangeEvent(PO2, Closed)
note right: ENTM-PV
@enduml |
Img | ||
---|---|---|
|
→ gemäß Absprache in UAG01: hierzu wird kein Beispiel erzeugt
Variante Cancel
Codeblock | ||
---|---|---|
| ||
@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
note over leab, tab: Die Sequenz [[https://confluence.t-systems-mms.eu/pages/viewpage.action?pageId=547957140#Auftrag(K%C3%BCndigungdurchLE,GFPV/VBL)anlegen-HappyPath Auftrag (Kündigung durch LE, GF PV/VBL, Happy path) anlegen]] wird hier includiert
leab ->tauf:notifyRUEM-PV(approval, reason)
eauf <- tauf: ProductOrderStateChangeEvent(PO,InProgress)
tauf -> leab:notifyInProgress
leab -> tab: ProductOrderStatusChangeEvent(PO2, InProgress)
note right: ABM-PV
eauf <- tauf: ProductOrderStateChangeEvent(PO,pending)
tauf -> leab:notifyInPending
leab -> tab: ProductOrderProcessingMessageEvent(PO2, delayMessage)
note right: VZM-PV
eauf <- tauf: ProductOrderInformationRequiredEvent(PO,requestedCompletionDate)
eauf -> tauf: POST CancelProductOrder
eauf <- tauf: POST CancelProductOrderStateChangeEvent(acknowledged, inProgress)
eauf <- tauf: ProductOrderStateChangeEvent(PO,assessingCancellation)
eauf <- tauf: ProductOrderStateChangeEvent(PO,Cancelled)
eauf <- tauf: POST CancelProductOrderStateChangeEvent(done)
tauf -> leab:notifyFailed
leab -> tab: ProductOrderStatusChangeEvent(PO2, failed)
note right: ABBM-PV
@enduml |
Img | ||
---|---|---|
|
→ gemäß Absprache in UAG01:
|
Beispieldaten (linker Block, TNBauf ↔ ANE)
Erweitern | ||
---|---|---|
| ||
Erweitern | ||
---|---|---|
| ||
Erweitern | ||
---|---|---|
| ||
Erweitern | ||
---|---|---|
| ||
ProductOrderStateChangeEvent: pending (11)
Bitbucket file macro | ||||||
---|---|---|---|---|---|---|
|
ProductOrderStateChangeEvent: pending | ||
fachliche Felder | Daten | API Felder |
Orderstatus | pending | state |
fachliches Änderungsdatum | 2022-12-16T11:30:00+01:00 | stateChangeDate |
technisches EventDatum | 2022-12-16T11:30:00+01:00 | eventTime |
Grund der Änderung | 6001 "Endkunde nicht angetroffen" | stateChangeReason.code stateChangeReason.description |
ProductOrderInformationRequiredEvent (14)
Bitbucket file macro | ||||||
---|---|---|---|---|---|---|
|
fachliche Felder | Daten | API Felder |
---|---|---|
Feld, zu dem eine Information benötigt wird | /requestedCompletionDate replace | fieldPath.path fieldPath.typeOfChange |
POST RescheduleProductOrder (15)
Bitbucket file macro | ||||||
---|---|---|---|---|---|---|
|
fachliche Felder | Daten | API Felder |
---|---|---|
Verschobener Kundenwunschtermin | 2022-12-19T12:00:00+01:00 | rescheduledRequestedCompletionDate |
Wunschzeitfenster | 2022-12-19T08:00:00+01:00 2022-12-19T12:00:00+01:00 | productOrderItem.requestedTimeSlot.validFor.startDateTime productOrderItem.requestedTimeSlot.validFor.endDateTime |
POST RescheduleProductOrderStateChangeEvent: inProgress (17)
Bitbucket file macro | ||||||
---|---|---|---|---|---|---|
|
fachliche Felder | Daten | API Felder |
---|---|---|
technisches EventDatum | 2022-12-16T11:40:10+01:00 | eventTime |
Orderstatus | inProgress | event.rescheduleProductOrder.state |
Orderstatus Änderungsdatum | 2022-12-16T11:40:10+01:00 | event.rescheduleProductOrder.stateChangeDate |
POST ProductOrderAttributeValueChangeEvent (18)
Bitbucket file macro | ||||||
---|---|---|---|---|---|---|
|
fachliche Felder | Daten | API Felder |
---|---|---|
technisches EventDatum | 2022-12-16T11:40:20+01:00 | eventTime |
Kundenwunschtermin | 2022-12-19T12:00:00+01:00 | event.productOrder.requestedCompletionDate |
Wunschzeitfenster | 2022-12-19T08:00:00+01:00 2022-12-19T12:00:00+01:00 | event.productOrder.productOrderItem.requestedTimeSlot.validFor.startDateTime event.productOrder.productOrderItem.requestedTimeSlot.validFor.endDateTime |
POST RescheduleProductOrderStateChangeEvent: done (19)
Bitbucket file macro | ||||||
---|---|---|---|---|---|---|
|
fachliche Felder | Daten | API Felder |
---|---|---|
technisches EventDatum | 2022-12-16T11:40:20+01:00 | eventTime |
Orderstatus | done | event.rescheduleProductOrder.state |
Orderstatus Änderungsdatum | 2022-12-16T11:40:20+01:00 | event.rescheduleProductOrder.stateChangeDate |
ProductOrderAttributeValueChangeEvent (20)
Bitbucket file macro | ||||||
---|---|---|---|---|---|---|
|
fachliche Felder | Daten | API Felder |
---|---|---|
technisches EventDatum | 2022-12-16T11:40:25+01:00 | eventTime |
Verbindlicher Liefertermin | 2022-12-19T12:00:00+01:00 | event.productOrder.expectedCompletionDate |
Vereinbartes Zeitfenster | 2022-12-19T08:00:00+01:00 2022-12-19T12:00:00+01:00 | event.productOrder.productOrderItem.appointment.validFor.startDateTime event.productOrder.productOrderItem.appointment.validFor.endDateTime |
ProductOrderStateChangeEvent: inProgress (21)
Bitbucket file macro | ||||||
---|---|---|---|---|---|---|
|
ProductOrderStateChangeEvent: inProgress | ||
fachliche Felder | Daten | API Felder |
Orderstatus | inProgress | state |
fachliches Änderungsdatum | 2022-12-16T11:40:30+01:00 | stateChangeDate |
technisches EventDatum | 2022-12-16T11:40:30+01:00 | eventTime |
Grund der Änderung | 0011 "Montage beim Endkunden erforderlich." | stateChangeReason.code stateChangeReason.description |
ProductOrderStateChangeEvent: completed (25)
Bitbucket file macro | ||||||
---|---|---|---|---|---|---|
|
ProductOrderStateChangeEvent: completed | ||
fachliche Felder | Daten | API Felder |
Orderstatus | completed | state |
fachliches Änderungsdatum | 2022-12-19T10:00:00+01:00 | stateChangeDate |
technisches EventDatum | 2022-12-19T10:00:00+01:00 | eventTime |
Grund der Änderung | 0010 "Auftrag ausgeführt." | stateChangeReason.code stateChangeReason.description |
ProductOrderAttributeValueChange (28)
Bitbucket file macro | ||||||
---|---|---|---|---|---|---|
|
ProductOrderAttributeValueChange (setzen von startDate) | ||
fachliche Felder | Daten | API Felder |
technisches EventDatum | 2022-12-19T10:00:30+01:00 | eventTime |
Nutzungsdatum | 2022-12-19T10:00:00+01:00 | product.startDate |
ProductOrderStateChangeEvent: closed (29)
Bitbucket file macro | ||||||
---|---|---|---|---|---|---|
|
ProductOrderStateChangeEvent: closed | ||
fachliche Felder | Daten | API Felder |
Orderstatus | closed | state |
fachliches Änderungsdatum | 2022-12-19T10:01:00+01:00 | stateChangeDate |
technisches EventDatum | 2022-12-19T10:01:00+01:00 | eventTime |
Grund der Änderung | 0010 "Auftrag ausgeführt." | stateChangeReason.code stateChangeReason.description |
Variante LineInUse
Bitbucket file macro | ||||||
---|---|---|---|---|---|---|
|
hierzu wird kein Beispiel erzeugt
Variante Cancel
Bitbucket file macro | ||||
---|---|---|---|---|
|
hierzu wird kein Beispiel erzeugt
...