In describing SugarCRM we encountered the following issues with DeploymentArtifacts:
1) It's important to be able to reference DeploymentArtifacts as top level entities for reuse. This avoids having multiple copies of the same DeploymentArtifact used in different places.
2) Subclassing of DeploymentArtifacts is useful to allow specialization while supporting polymorphism. E.g. special types of archives, VMImages, Disks, etc.