Adaptors are usually required because the COTS products are independently developed at different times and, therefore, they are not designed for integration. There is no reason why the database organisation, user interfaces, APIs, etc. should take into account the integration with other components.
Three practical problems that may arise when integrating COTS application systems are:
1. Missing information. Application A may require information from application B to work properly. However, application B may not need this information (or it may be optional) and so it cannot guarantee that it can be made available to application A.
2. Control incompatibilities. Application A and application B may have different control philosophies. For example, application A may be reactive, depending on the user inputs whereas application B may be proactive and use workflow-based, pre-defined interaction.
3. Semantic mismatches. This occurs when different applications use the same name for some kind of information but that actually means different things. For example, a system that manages project budgets may record ‘start date’ of the project as the date after which funding may be spent whereas the project management system considers start date to the date that work actually started.