While investigating options for deploying Sitecore to Azure, I found a TeamCity deploy plugin that supported FTP (among other things). Unfortunately, after trying to get it up and running I ran into the following 501 error while using FTPES (explicit FTPS):
“Failed to upload artifacts via FTP. Reply was: 501 server cannot accept argument”
Investigating on the server, I found the following in the IIS server logs:
“Client IP on the control channel didn’t match the client IP on the data channel”
A little bit of Google digging later, I found some chatter on the issue on the plugin’s GitHub issues list. That thread pointed to a patch build with options to specify Active versus Passive in the FTP mode. It turns out I needed Passive, but the original plugin download didn’t support it.
If you also need this functionality, this is the link to the plugin developer’s build which supports an option to specify Passive versus Active on the FTP mode:
With the release of TDS 5.5, deployments now support post-deploy actions with a few out of the box options. However, you can even add your own custom actions into the flow. With a little help from Hedgehog Sitecore MVP Sean Holmesby (Thanks Sean!), I was able to get this working using the following six easy steps.
Continue reading TDS Custom Post Deploy Actions
Recently, I wrote about patching Sitecore instances for specific roles. During my research on how to do this, I was able to use a manner of Sitecore patching I had not previously known about. With a patch:instead, instead of targeting an attribute of the element you can actually target the contents of that element. (Thanks to @jammykam for that Stack Overflow post!)
Why is this useful?
Typically patch:instead is used to replace one value with another in the settings, but because of the matching capabilities of this syntax you can use this to patch:delete elements you couldn’t otherwise match against.
So, when you need to remove an element from the configurations that have multiple elements with no distinguishing characteristics, you can target the inner content instead to distinguish them.
Yummy Config example!
Below is a sample config file which can remove a <using> tag by targeting the text inside the using tag.
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/" xmlns:set="http://www.sitecore.net/xmlconfig/set/">
<!--Target based on text in the tag-->
Those of you who have installed Sitecore in a scaled environment (i.e. multiple instances) know that the process can be somewhat tedious. To configure an instance to use a specific role, you need to manually enable/disable/modify config files to make the instance act as a delivery, authoring, or processing instance. Oh, do you also want to upgrade to the latest update? Be prepared to have to do it all over again.
While we wait for Sitecore to make this process a little bit easier, I decided that enough was enough and I wasn’t doing those steps anymore. Introducing the Sitecore Role Configs!
Inspired by the work in @kamsar’s SwitchMasterToWeb, the role configs capture the manual steps from those guides in a single role-specific file. Need to configure a processing instance? Drop the processing config file for your version of Sitecore.
Note: Hardening is not covered in these files, so keep that SwitchMasterToWeb handy!
At the time of writing, I’ve got Sitecore 8.0 Update 3 to Update 7 supported and will be working to get other versions in there as time goes by.
One day, I hope that the need for these files will be completely obsolete and I will laugh at how easy it is to deploy new roles of Sitecore. For now, though, happy deployments, and let me know if you find any issues and I’ll fix them up!
It’s that time of year again: Sitecore has announced the 2016 MVPS! I was again honoured to see my name on the list for the third year in a row. You can see the full list of 2016 MVPs on the Sitecore MVP site.
My outward reaction when reading the email may have been calm and professional, but inside I was more like this:
With a third season on the MVP list ahead of me, I need to find a way to take things to another level. This past year I tackled my goal of having more of a speaking presence and had the chance to do an xDB webinar and also present at the Toronto Sitecore User Group, SUGCON in New Orleans, and at DevOps East in Orlando. I definitely learned things about myself and our great technical community during these trips and I look forward to having a chance to do some more presentations this year.
However, doing a repeat of last year isn’t really stepping things up a level. Instead, I have a few things I’d like to try to achieve this coming year. For one, last year I wasn’t able to create a new marketplace contribution. I was able to provide some updates to the authenticated preview module, but this year I want to actually come up with something new and provide some value.
Also, I’d like to experiment a little bit more with some video content, though maybe not always with a musical slant as was done recently.
Six of my colleagues at nonlinear also received this prestigious award, including the only MVPs in Brazil! If you are interested in reading more, below are some of the releases that Claire and the rest of our team put together. Congratulations team!
Team Development for Sitecore (TDS) supports the ability to manage your Sitecore roles within your TDS projects in Visual Studio. This ensures that important roles defined for things like workflow or other security needs can be deployed to all your environments.
Recently, I was building my packages for deployment to production and was going through the generated .update package and could not find my roles. No folders for roles, no files for roles… WHERE ARE MY ROLES?
Hedgehog support to the rescue!
I reached out to the fine folks at Hedgehog for some help and heard back the same day. Apparently, the standard Sitecore Update package format doesn’t support roles, so when Hedgehog added the support they did some sneaky things to make magic happen. The roles have actually been added into post deployment steps, and you can find the role definitions inside the file /_Dev/DeployedItems.xml.
The XML looks something like this:
<Role Name="sitecore\Keystone Multisite Manager">
This obfuscated CDATA content contains all the things you need to define the role in Sitecore. Pretty nifty!
This was an odd one that came up during a recent project. My colleague Kevin had activated our standard Keystone workflow email notifications and configured the SMTP settings for the Sitecore application.
A short workflow test later and not only were emails not going out but an error was occurring with the message: “The device is not ready”. What is going on? Why is an IO error being thrown?
Continue reading Sitecore SMTP messages throw “device not ready” error