Hi, I've converted syntax for http://plantuml.com/ , please check if it works for you. Client->Keystone: Authentication Request Activate Keystone Keystone->LDAP: authn Activate LDAP Keystone<--LDAP: Deactivate LDAP Keystone->"Token Store": Save token Activate "Token Store" Keystone<--"Token Store" Deactivate "Token Store" Keystone-->Client: Auth token Deactivate Keystone Client->"Nova-api": launch instance Activate "Nova-api" "Nova-api"->DB: Create initial entry for instance "Nova-api"->MQ: [rpc.cast] to request new instance "Nova-api"->Client:Instance request complete Deactivate "Nova-api" "Nova-Scheduler"->MQ: Subcribe new instance request "Nova-Scheduler"->DB: read filtering and weighing info "Nova-Scheduler"->DB: Read cluster state "Nova-Scheduler"->DB: Save instance state "Nova-Scheduler"->MQ: rpc.cast to launch instance "Nova-compute"->MQ: Subcribe new instance request "Nova-compute"->MQ: rpc.call to Nova-conductor to fetch the instance info "Nova-conductor"->MQ: Subcribe new instance request "Nova-conductor"->DB: Read instance state "Nova-conductor"->MQ: Publish new instance state "Nova-compute"->MQ: Subcribe new instance request "Nova-compute"->"Glance-api": REST get Image URI by Image ID from glance Activate "Glance-api" "Glance-api"->"Nova-compute": Return image URI Deactivate "Glance-api" "Nova-compute"->ceph_mon: get cluster map Activate "ceph_mon" ceph_mon->"Nova-compute": return map Deactivate "ceph_mon" "Nova-compute"->ceph_rgw: [REST] request object Activate "ceph_rgw" ceph_rgw->ceph_osd: [socket] get object ceph_rgw->"Nova-compute": return object Deactivate "ceph_rgw" "Nova-compute"->"Neutron-server": allocate and configure the network for instance Activate "Neutron-server" "Neutron-server"->MQ: Request IP "Neutron-server"->MQ: Request L2 config "Neutron-DHCP-agent"->MQ: read Request IP "Neutron-DHCP-agent"->dnsmasq: allocate IP dnsmasq->"Neutron-DHCP-agent": reply "Neutron-DHCP-agent"->MQ: reply IP "Neutron-server"->MQ:read IP "Neutron-L2-agent"->MQ: read Request L2 config "Neutron-L2-agent"->libvirt: config L2 "Neutron-L2-agent"->MQ: reply L2 config "Neutron-server"->DB: save instance network state "Neutron-server"->"Nova-compute": Pass network info Deactivate "Neutron-server" "Nova-compute"->"Cinder-api": [REST] get volume data "Cinder-api"->Keystone: Validate token & permissions Activate "Keystone" "Cinder-api"<--Keystone: updated auth headers with roles and acl Deactivate "Keystone" "Cinder-api"->"Nova-compute": return volume info "Nova-compute"->libvirt: Start VM "Nova-compute"->libvirt: Port_update "Nova-compute"->MQ: rpc.call to Nova-conductor to fetch the instance info "Nova-conductor"->MQ: Subcribe new instance request "Nova-conductor"->MQ: Publish new instance state "Nova-compute"->libvirt: pass volume info libvirt->ceph_mon: get cluster map Activate "ceph_mon" ceph_mon->libvirt: return map Deactivate "ceph_mon" libvirt->ceph_osd: mount volume "VM-instance"->neutron_metadata_proxy: http rest 169.254.169.254 Activate neutron_metadata_proxy neutron_metadata_proxy->"nova-api-metadata": http rest add uuid into X-headers "nova-api-metadata"->neutron_metadata_proxy: neutron_metadata_proxy->"VM-instance": return metadata Deactivate neutron_metadata_proxy Client->"Nova-api": Poll instance state Activate "Nova-api" "Nova-api"->DB: Read instance state Activate DB DB->"Nova-api": Return state Deactivate DB "Nova-api"->Client: Return instance state Deactivate "Nova-api"