It's my understanding that the Sitecore upgrade packages are designed to run against only core and master - where changes are published to web. I need to upgrade 2 additional publishing targets that retain state (I can't just publish from master). Is there an alternate approach other than running the upgrade multiple times and tricking Sitecore into thinking the additional publishing targets are the master database?

  • When you say "run against" 3 databases at a time, vs 5 what are you referring to? Are you talking master, web, and core or something else? – Pete Navarra Oct 28 '16 at 20:04
  • Yes. In my case, I have core, master, web and 2 additional publishing targets. – sestocker Oct 28 '16 at 20:12
  • It could be very possible that my understanding is wrong and all databases can be upgraded with one run through. For context I'm going from 6.6 to 8.1. – sestocker Oct 28 '16 at 20:13
  • Typically the upgrade package will only modify core and master. Then you publish to web and other publish targets to get those updated – Ben Golden Oct 28 '16 at 20:13
  • @BenGolden I think you are right. The problem is that I cannot safely publish to all 3 publishing targets (they retain state - certainly against Sitecore best practices). I think for the targets that retain state, I'm going to have to "trick" Sitecore into thinking they are the master database. – sestocker Oct 28 '16 at 20:39

I'm not sure if "tricking" sitecore by switching the connection strings for master to the other publishing databases would work, However i would suggest the following:

  1. In Sitecore Desktop, Switch to one of your publishing databases.
  2. Open content editor, then navigate to the items that you don't want to be overwritten by a publish process
  3. Click on "DEVELOPER" tab, then click "Serialize Tree", this will serialize this section on the tree into XML files, which can be found within your data\serialization[Database name] folder, I would back them up before i start the upgrade.
  4. Do the same for the other publishing database
  5. Install Sitecore upgrade packages for core and master and publish from master to publishing tagets
  6. Deserialize the items, by going back to sitecore desktop, and switching to one of the publishing databases.
  7. Navigate to the items that you want to restore as it was.
  8. Click on "DEVELOPER" tab, then click "Revert Tree"

You should be able to get these items to the previous state before the upgrade was applied.

Hope this helps!

  • This is a good approach. I'd assume using something like TDS or Unicorn for item serialization would work too. – sestocker Oct 29 '16 at 1:49
  • @sestocker Yes these tools would work too – Ahmed Okour Oct 29 '16 at 20:39

Publishing targets should always be in a state where publishing from master is possible. The Sitecore upgrade makes changes to core and master - and changes are then published from master to the publishing targets.

If content delivery databases are in a state where publishing isn't possible, you will need to run the Sitecore upgrade against those databases (as if those databases were master). This is obviously not Sitecore best practices as target databases should always be able to be published to.

  • I've ran into this scenerio at multiple different clients so it is not as rare as you might think. One client used workflow to publish to their different environments (instead of using TDS or Sitecore packages). Because the different environments (think Dev vs. QA vs. Stage) retained state for that particular environment, each environment's web database has to be upgraded using the Sitecore upgrade packages. – sestocker Nov 1 '16 at 15:11

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.