When implementing a COTS project, one of the approaches to avoid is using a "big bang" deployment at the end. Often management will balk at doing "throw away" work in order to have a controlled migration from the current system to the new COTS-based system, but my personal experience has been that projects using a full cut-over approach have high failure rates.
A typical COTS project involves replacing an existing system with a new one based on a new COTS product - it may be replacing a home grown solution, a different COTS product, or a previous version of the same COTS product. This is typically an IT driven effort - the business usually sees no value in replacing the current system. The standard approach is to mandate a freeze on improvements to the existing system and rush the new system into full production as quickly as possible. This, however, often leads to engineering short cuts and eventual business dissatisfaction (sometimes fatal dissatisfaction) with the final release.
A more agile approach is to have both old and new systems run in parallel and incrementally migrate capabilities from the old to the new. This will also entail developing a data synchronization process between the two systems. This added effort provides risk mitigation by allowing the development team to work on smaller sized pieces with discrete production roll-back capabilities.
There are several ways to decompose system functionality to support a migratory approach and they can be used in conjunction with each other. One can migrate work from the old system by individual user roles. One can migrate work from the old system by workflow steps from the start of processing. One can migrate work from the old system by workflow steps starting at the end and working backwards. The key is to understand how the existing system is used, which is surprisingly often unknown.
The key to an agile COTS project is to use an evolutionary, migratory approach. This will entail some additional data synchronization work, but the organization will benefit by having a smooth, orderly, low risk deployment effort.