June 7, 2010 by Alistair Deneys
Whenever upgrading from one Sitecore version to another it’s always good to know what exactly has changed between the versions to ensure you don’t miss anything. The two areas you’re likely to find change that will directly affect you and your solution would be the configuration files, namely the web.config file, and the data, the content in both the master database and the core database.
The file changes are very easy to discover simply by using a diff tool such as WinMerge. So I’ve done the leg work for you and diff’ed the files between Sitecore 6.2 rev 100104 and Sitecore 6.2 rev 100507 (the latest 2 releases).
bin\Interop.Shell32.dll bin\Sitecore.Analytics.dll bin\Sitecore.Client.dll bin\Sitecore.Kernel.dll bin\Sitecore.Logging.dll bin\sitecore.nexus.dll bin\Sitecore.NVelocity.dll bin\Sitecore.Oracle.dll bin\Sitecore.SQLite.dll bin\Sitecore.Update.dll bin\Sitecore.Zip.dll bin\Sitecore.Client.XML bin\Sitecore.Kernel.xml sitecore\admin\restore.aspx sitecore\admin\ShowConfig.aspx sitecore\admin\unlock_admin.aspx sitecore\login\default.aspx sitecore\shell\Applications\Analytics\ReportRunner\Report.aspx sitecore\shell\Applications\Analytics\Reports\LatestSessions.mrt sitecore\shell\Applications\Analytics\Reports\LatestSessions.Oracle.mrt sitecore\shell\Applications\Content Manager\Content Editor.js sitecore\shell\Applications\debug\install.dialogs.browsedialog.cs sitecore\shell\Applications\Globalization\SitecoreClientTranslation\SitecoreClientTranslation.aspx sitecore\shell\Applications\Install\Dialogs\Text Editor\TextEditor.xml sitecore\shell\Applications\Security\UserManager\UserManager.aspx sitecore\shell\Applications\WebEdit\WebEditElement.js sitecore\shell\Controls\debug\dialogs.formdialog.cs sitecore\shell\Controls\debug\listviews.listviewviewsmenuitems.cs sitecore\shell\Controls\Rich Text Editor\Preview.aspx sitecore\shell\Controls\Rich Text Editor\RichText Commands.js sitecore\shell\Controls\ComponentArtGrid.js sitecore\shell\Controls\Sitecore.js sitecore\shell\Schemas\sitecore.xsd sitecore\shell\Themes\Standard\Default\Default.css sitecore\shell\Themes\Standard\Internet Explorer\Default.css sitecore\shell\sitecore.version.xml xsl\sample rendering.xslt Web.config Web.config.Oracle web.config.SQLite
So, changes that would affect your solution. The changes to the assemblies in the bin folder mean you’ll need to rebuild your solution against these assemblies to ensure there have been no API updates and also to make sure your assemblies are referencing the correct files. Changes to files under the sitecore folder should not affect your solution as that’s just updates to Sitecore UI. And what we’re left with is web.config.
Let’s drill into web.config and look at the changes.
Line 1123: Add
<processor mode="on" type="Sitecore.Pipelines.LoggedIn.CleanupUserProfile, Sitecore.Kernel" /> to logged in pipeline.
Line 1457: Add
mediaPrefixes element to
Line 2175: Add
Line 2304: Add
And this highlights why you should use configuration patch files (config files in
App_Config\Include). If you’d used config patch files you wouldn’t have to worry about changes in web.config as your configuration wouldn’t be mixed in with the Sitecore system configuration. Not such a huge issue in this case, but keep in mind we’re all eagerly awaiting the release of Sitecore 6.3 🙂 .
Often the data changes between versions are overlooked. When Sitecore 6.1 was released the new analytics application definitions and reports were included in the new databases. If you’d upgraded a solution from an earlier Sitecore version and not paid attention to the data, then you would have missed these application definition items.
But you can’t just replace the database as it’s full of your data templates and items, etc. If you’ve followed good content structure practises then it would be pretty easy to simply create a package of your data items, replace the database with the new version (backup your old one first) and deploy your content package. Another option would be to use Sitecore item serialization or a more advanced tool like TDS (which I would recommend for development anyway).
But all that seems like a lot of work when it might not be required. What I’d like is a report of all the changes of the content items between versions. Enter Revolver. I can use Revolver to create me a file of the paths of all of the items in a database. I can then use a diff tool like WinMerge from above to compare the files from both servers.
To create the output file, open Revolver and execute the following command.
echo -f c:\temp\items_master_100104.txt < (find -r pwd)
The command above uses the
echo command with the
-f parameter to write to a file. I’m passing into this the output of another command by using the subcommand token
<. And that other command is a recursive find with no filters. For each of the items matched in the find (everything) output the working path.
I’ll repeat that for the core database of this server and the master and core database on the version I’m comparing against. We need to do both core and master as they both may contain new or updated items in a version upgrade.
I can then compare the core files and the master files using a diff tool. One of the things I keep in mind when developing Revolver is that the user does have a graphical environment in which other more specialised programs run. I don’t need to worry about providing all the analysis and diff tools in Revolver as Revolver can be used to output the data and a more appropriate program used to perform the analysis.
And the compare reveals…no item changes between Sitecore 6.2 rev 100104 and Sitecore 6.2 rev 100507. So if you’re upgrading between these versions you can safely ignore the databases.