@startuml autonumber skinparam sequenceBox { borderColor White } participant User box "application" #LightBlue participant CliWorkplace participant WorkplaceCliCommand participant Application end box box #White participant CliUtils participant "ProvInstance (local, remote...)" as ProvInstance end box box "domain" #LightGreen participant ProvisionWorkplace participant WorkplaceConfig end box box "infrastructure" #CornSilk participant ConfigRepository participant InfrastructureModules end box User -> CliWorkplace ++ : main(args...) CliWorkplace -> WorkplaceCliCommand : parseWorkplaceArguments CliWorkplace -> WorkplaceCliCommand : isValid ? CliWorkplace -> CliUtils : createProvInstance ProvInstance <- CliUtils : create CliWorkplace -> ConfigRepository : getConfig WorkplaceConfig <- ConfigRepository : create WorkplaceConfig --> ConfigRepository : config CliWorkplace <-- ConfigRepository : config CliWorkplace -> Application : provision Application -> ProvInstance : provisionWorkplace ProvInstance -> ProvisionWorkplace : provisionWorkplace ProvisionWorkplace -> InfrastructureModules: Various calls like: ProvisionWorkplace -> InfrastructureModules: install ssh, gpg, git ... ProvisionWorkplace -> InfrastructureModules: installVirtualBoxGuestAdditions ProvisionWorkplace -> InfrastructureModules: configureNoSwappiness, ... @enduml