|Top Previous Next|
The first version of CopyMove for SharePoint 2007 was developed early 2008 for one specific client who had long sought a good and user friendly tool for copying and moving documents in SharePoint. It was deployed to their production environment in the autumn of 2008 and is still pleasing the end-users there. The product then received some more work to take it from a single-client product to a shrink-wrap product, which is quite a different world in terms of product completeness and stability. The first shrink-wrap version was released to Web on www.sharepointproducts.com in March 2009.
In the following years CopyMove was downloaded and evaluated by thousands of registered users and was in turn also purchased by many. The product now has a strong customer base and we have listened to a lot of feedback over the years and improved the product accordingly. The constant improvements has turned it into a very usable and stable product that will work in almost any SharePoint environment. CopyMove has been deployed by customers to single-server SharePoint farms as well as multi-server SharePoint farms consisting of 10+ servers.
In May 2010 a new major version of SharePoint from Microsoft hit the market, and it quickly became evident that CopyMove was still needed to fill the gap of a safe, fast and user friendly way to copy and move content. SharePoint 2010 did not bring any improvements over SharePoint 2007 in this respect. Consequently, we decided to invest our efforts in developing a major upgrade of CopyMove to provide support for SP2010 as well. Much work was required to support the new SharePoint user interface and new functionality like document sets and managed Metadata. Finally, late 2010 we released the first version of CopyMove for SharePoint 2010.
SharePoint 2013 is also not shipping with a solid Copy&Move function out-of-the-box. Hence, we again offered a major upgrade of CopyMove to support the new version of SharePoint. CopyMove 2013 was released in June 2013 and is basically a 1:1 upgrade from CopyMove 2010.
One should think that developing a tool for copying and moving stuff in SharePoint is a simple endeavor - but it's not! We first tried to rely on the SharePoint migration framework (the SPExport and SPImport classes) - but that quickly turned out to be a dead end as this framework is seriously flawed for use in end-user Web requests. Instead, we had to invest in the development of our own migration framework on top of the SharePoint object model. It was a big investment but worth it today. It is very flexible, extensible and stable and serves as a good engine for CopyMove. Let's for a moment go back to why SharePoint does not make it easy to copy and move content. First of all it is difficult because documents and list items can be associated with a huge array of different artifacts that can take a lot of work to recreate programmatically in a new location. The list of possible artifacts include timestamps, user information, version history, content types, Web parts, properties in a property bag, 10+ types of different Metadata columns, content approval, ratings, work flows, item permissions, unique document ids and barcodes. Next, there are several types of documents that all work through different parts of the SharePoint API and in very different ways. Types of documents include regular document files, Web part pages, Wiki pages, Publishing pages and document sets. Next, it takes a lot of time to perfect a migration framework like the one we built because of the complexity involved in supporting all the different formats and artifacts in SharePoint. Also, integrating so wide and deeply with the SharePoint API inevitably gets you into corners where SharePoint has unexpected and undocumented behavior. Finally, CopyMove has also grown into a complex product under the hood because it uses a lot of effort to validate each transaction to guide and protect users from loosing data. In other words, creating a fool-proof tool is also a complex task. See the section Product Features for more details on transaction validation.