Sequence Diagram

@startuml
Title Application LCM Step 3 - Catalog Package
skinparam sequenceArrowThickness 2
skinparam ParticipantPadding 5
skinparam BoxPadding 10
skinparam ArrowColor #blue
autonumber

Box Personnel #lightblue
Actor sOP as "SMO Operator" <<INT OTF>>
End box

Box "SMO" #gold
Participant sPMGR as "Package Manager" <<RICAPP>>
Boundary MC as "Model Catalog" <<SMO MVC State Manager>>
end box

== Catalog ==

sOP -> sPMGR : Catalog (applicationVersionID, modelCatalogEndPoint)
sPMGR -> MC : GET ../applications/<applicationVersionID>
alt if application not found
   note over sPMGR : Requested Version not in Catalog, return error
else if application.State is NOT VALIDATED then
   note over sPMGR : Requested Version not in Validated State, return error
else
   sPMGR -> sPMGR : GetDeploymentList
   loop foreach defined deployment configuration
      sPMGR -> MC : POST ../applications/<applicationVersionID>/deployments {deployment}
      return deploymentID

      sPMGR -> sPMGR : GetDeploymentDescriptor
      sPMGR -> MC : POST ../applications/<applicationVersionID>/deployments/<deploymentID>/descriptor {deployment}

      sPMGR -> sPMGR : GetPolicyProfiles
      loop foreach Policy Profile
         sPMGR -> MC : POST ../applications/<applicationVersionID>/deployments/<deploymentID>/policytype {policyProfile}
      end

      sPMGR -> sPMGR : GetDataConsumptionInfo
      loop foreach dataConsumptionDefinition in dataConsumptionInfo
         sPMGR -> MC : POST ../applications/<applicationVersionID>/deployments/<deploymentID>/consumes {dataConsumptionDefinition}
      end

      sPMGR -> sPMGR : GetDataPublicationInfo
      loop foreach dataPublicationDefinition in dataPublicationInfo
         sPMGR -> MC : POST ../applications/<applicationVersionID>/deployments/<deploymentID>/publishes {dataPublicationDefinition}
      end

      sPMGR -> sPMGR : GetDeploymentConfigurationSchema
      sPMGR -> MC : POST ../applications/<applicationVersionID>/deployments/<deploymentID>/DeploymentConfiguration {deploymentConfiguration}

      sPMGR -> sPMGR : GetApplicationConfigurationSchema
      sPMGR -> MC : POST ../applications/<applicationVersionID>/deployments/<deploymentID>/ApplicationConfiguration {applicationConfiguration}

      sPMGR -> sPMGR : GetDeploymentImages
      loop foreach imageFile in deploymentImages
         sPMGR -> MC : POST ../applications/<applicationVersionID>/deployments/<deploymentID>/images {imageFile}
      end

      sPMGR -> sPMGR : GetCertificates
      loop foreach certificate in applicationCertificates
         sPMGR -> MC : POST ../applications/<applicationVersionID>/deployments/<deploymentID>/certificates {certificate}
      end
   end
end if

sPMGR --> sOP : Status

@enduml