@startuml

skinparam backgroundColor #EEEBDC
skinparam borderThickness 3.5

skinparam sequence {
rectangleBorderThickness 0.5
	 titleBorderRoundCorner 15
 titleBorderThickness 2
 titleBorderColor red
	ParticipantBackgroundColor Orange
	ParticipantBorderColor Orange
	ParticipantFontName Arial
	ParticipantFontSize 17
	ParticipantFontColor black
	LifeLineBorderColor green
	LifeLineBackgroundColor #a5e5d0
	ArrowColor black             
}





participant "Vehicle CAN" as CAN
participant "Vehicle App" as ADA
participant "Vehicle Client" as TC
participant SDP
participant "FCA IT" as FCA

autonumber
===Policy Management==
FCA -> FCA: Create and Store Policy
FCA -> FCA: Generate <i>VehicleDataAcquisitionPolicyPublish</i>  Message
FCA -> FCA: Zip/Compress <i>VehicleDataAcquisitionPolicyPublish</i>  Message
FCA -> SDP: Send Zipped Message
SDP --> FCA: Ack
SDP -> ADA: Send Zipped Message [HTTP | MQTT]
TC -> ADA: Unzip Message and Send to App
ADA -> ADA: decombile protocol buffer message
ADA -> ADA: validate policy
ADA -> ADA: Load Policy
ADA -> ADA: Provide Status

==== Data Collection ==
autonumber 1 
ADA -> CAN: Collect Data Per Policy (Event, Period, Etc)
ADA -> ADA: generate <i>VehicleDataAcquisitionPublish<i> message
ADA -> TC: submit message
TC -> TC: Zip/Compress Message 
TC->SDP: Send Message
SDP -> FCA: Send Message
FCA -> FCA: Unzip, Decompile Protobuf
FCA -> FCA: Interpret and store
FCA -> FCA: Transform and validate data into final output for business requirements
note left of FCA: Examples include UBI, FTD, RVS
create Actor "Data Consumer" as DC
FCA -> DC: Send to Consumer(s)





@enduml
