1. An apparatus for transferring virtual machines, the apparatus comprising: a processor communicatively coupled to a plurality of virtual machines, each of which has a plurality of virtual machine characteristics; and a non-transitory machine readable medium storing instructions configured to, when executed by the processor, cause the processor to: receive a virtual machine logical name which includes a plurality of discrete tags, wherein each discrete tag is representative of a respective virtual machine characteristic of the plurality of virtual machine characteristics; responsive to receiving the virtual machine logical name, resolve the virtual machine logical name into at least one virtual machine explicit name associated with at least one storage location of at least one virtual machine of the plurality of virtual machines by accessing a virtual machine registry, the virtual machine registry including at least a unique identifier that uniquely identifies the virtual machine, the virtual machine logical name, the at least one virtual machine explicit name and the at least one storage location for each respective virtual machine of the plurality of virtual machines, the at least one storage location located in a virtual machine repository separate from the virtual machine registry, and each respective one of the plurality of virtual machines being associated with a different unique identifier, and the virtual machine logical name being different from the unique identifier and the virtual machine explicit name; and responsive to resolving the virtual machine logical name, transfer the at least one virtual machine from the at least one storage location in the virtual machine repository to a host environment.