Enterprise applications are typically large software applications that are used by many customers or users, such as employees of a business. These applications usually have multiple components that interact with one another and with other systems to perform various tasks. Enterprise applications include, e.g., enterprise resource planning, customer relationship management, and electronic messaging systems.
While the enterprise applications may offer a host of functionality, businesses using these applications sometimes need to customize the enterprise applications. As an example, a business may add or modify components to perform or validate the rules of the business. As another example, the business may add or modify user interface (“UI”) components to implement a look and feel that may be unique to the business. Administrators may expend considerable effort in customizing the UIs, testing their customizations, training users, developing user manuals, and performing other activities relating to the enterprise applications and their customizations.
Vendors of enterprise applications sometimes upgrade the enterprise applications. Such upgrades may be necessitated by, e.g., addition of important functionality requested by the business, resolution of defects in the enterprise applications, addition of new features that may be valuable to several customers of the vendor, and a variety of other reasons.
Enterprise applications may comprise multiple repositories. As an example, an enterprise application may comprise a repository of components delivered by a vendor and a repository of components added by a business. Repositories comprise components of an enterprise application. As an example, a repository may contain UI or logic components of an enterprise application. When administrators upgrade the enterprise application, they may need to again expend considerable resources in reapplying their customizations, which could increase the total cost of ownership of such enterprise applications. It would thus be desirable to upgrade enterprise applications without incurring such additional costs.