@startuml

skinparam ParticipantFontColor automatic

title: CAS 1 : cas nominal SIMPLE - l’OC dépose une anomalie avec pièce jointe 

autonumber

participant OC #Blue
participant OI #Green


OC->OC: je crée le trouble ticket OC anomalie adresse pour traçage interne \n POST /troubleTicket {\n"ticketType": "anomalie adresse",\n"description": "ajout d’une adresse connue de la BAN mais manquante dans l’IPE de l’OI, maison oubliée sans impact capacitaire il s’agit juste d’ajouter le Pavillon dans l’IPE."}
OC->OC: contrôles de surface
OC->OC: acquitement technique du dépot de ticket \n http201"troubleTicket": \n{"ID":"500", "href":"https://myOC.com:8080/tmf-api/troubleTicket/v4/troubleTicket/500", "Status":"acknoledged"}

OC->OI: je dépose la pièce jointe chez l'OI
OI->OC: HTTP 201 indentifiant de la PJ. <PJId>
OC->OI: je crée l'anomalie d'adresse chez l'OI \n POST /Anomalie
OI->OC: HTTP 201 indentifiant de l'anomalie <anomalieId>


OC->OI: je crée le trouble ticket OI anomalie adresse \n POST /troubleTicket {\n"ticketType": "anomalie adresse",\n"description": "ajout d’une adresse connue de la BAN mais manquante dans l’IPE de l’OI, maison oubliée sans impact capacitaire il s’agit juste d’ajouter le Pavillon dans l’IPE.",\n"externalId": "500",\n"priority": "High",\n"requestedResolutionDate": "2022-11-17T20:00:00-04:00",\n"severity": "normal"}

OI->OI: contrôles de surface

OI->OC: acquitement technique du dépot de ticket \n http201"troubleTicket": \n{"ID":"100", "href":"https://myOI.com:8080/tmf-api/troubleTicket/v4/troubleTicket/100", "Status":"acknoledged"}


OC->OI: [ALT] abonnement aux notifications TT (n'est pas nécessaire à chaque ticket) \n POST https:\//myOI.com:8080/tmf-api/troubleTicket/v4/troubleTicket/hub?Accept:application/json,{"callback":"http://OC.in.listner.com"}

OI->OC: acquitement de la souscription (avec son ID) \n http201:"Created, Content-Type: application/json, Location: /troubleTicket/hub/42{"id":"42","callback":"http://OC.in.listner.com","query":null}"


OI->OI: contrôler l'accessibilité de la pj. et la recevabilité du ticket

OI->OC: acquitement fonctionnel du dépot de ticket (inProgress) \n { "eventId":"00002", "eventTime":"2022-10-12T11:42:25-04:00", "eventType":"TroubleTicketStatusChangeEvent", "event": \n{ "troubleTicket": \n{"ID":"100", "href":"https://myOI.com:8080/tmf-api/troubleTicket/v4/troubleTicket/100", "troubleTicketTicketStatusType":"inProgress"}\n} \n}

OC->OC: je patche le trouble ticket OC pour référencer le ticket OI \n PATCH /troubleTicket {\n "troubleTicketId":"500",\n"externalId": "100",\n "troubleTicketTicketStatusType":"inProgress",\n"statusChangeDate":"<horodatage>",\n"statusChangeReason":"référence du ticket OI ajoutée"}

OI->OI:résolu, je patche l'anomalie adresse pour ajouter les adresses créees \n PATCH /Anomalie.Creation \n {"ID":<anomalieID>, \n"adresse_cree":[AdresseRef]}
OI->OI: résolu, adresse ajoutée \n PATCH /troubleTicket {\n"ID":"100",\n"troubleTicketTicketStatusType":"resolved",\n"statusChangeDate":"<horodatage>",\n"statusChangeReason":"résolu adresse ajoutée"}

OI->OC: notification de résolution: \n { "eventId":"00003", "eventTime":"2022-11-16T16:42:25-04:00", "eventType":"TroubleTicketResolvedEvent", "event": \n{ "troubleTicket": \n{"ID":"100", "href":"https://myOI.com:8080/tmf-api/troubleTicket/v4/troubleTicket/100", "troubleTicketTicketStatusType":"resolved"}\n "statusChangeReason":"résolu adresse ajoutée"\n}}

OC->OI: récupérer les références d'immeubles crées \n GET /Anomalie?id=<anomalieID>
OI->OC: HTTP 201 structure données dont adresse_cree:[AdresseRef]

OC->OC: clore le ticket \n PATCH /troubleTicket {\n"ID":"500",\n"troubleTicketTicketStatusType":"closed",\n"statusChangeDate":"<horodatage>",\n"statusChangeReason":"résolu"}

OC->OI: notification de résolution: \n { "eventId":"00005", "eventTime":"2022-11-16T16:42:25-04:00", "eventType":"TroubleTicketResolvedEvent", "event": \n{ "troubleTicket": \n{"ID":"500", "href":"https://myOC.com:8080/tmf-api/troubleTicket/v4/troubleTicket/500", "externalID":"100", "troubleTicketTicketStatusType":"closed"}\n} \n}



OI->OI: clore le ticket \n PATCH /troubleTicket {\n"ID":"100",\n"troubleTicketTicketStatusType":"closed",\n"statusChangeDate":"<horodatage>",\n"statusChangeReason":"résolu"}


@enduml
