1. A method comprising: receiving, by a computer system, a deployment plan for a software application, the deployment plan specifying a plurality of artifacts for the software application and default deployment logic for the plurality of artifacts, the software application comprising a Service Oriented Architecture application, the deployment plan generated based at least in part by: storing a functional representation of the Service Oriented Architecture application in a shared data store; collecting metadata pertaining to software services used by the Service Oriented Architecture application; and generating the deployment plan based at least in part on the functional representation and the metadata; and processing, by the computer system, the deployment plan, the processing comprising: determining, for each artifact in the plurality of artifacts, whether the artifact is associated with a user-defined condition, the user-defined condition including variables provided by a user for modifying the deployment plan, the deployment plan modified by conditional deployment logic based at least in part on the user-defined condition; and if the artifact is associated with a user-defined condition: evaluating the user-defined condition; and executing the deployment plan with the conditional deployment logic for the artifact based at least in part on the evaluation of the user-defined condition.