I've ended last post saying that I'd like to be able to send packages over the wire to other Sitecore servers. Starting last weekend, it is officially cold here in Ukraine. The snow broke on Friday, and now we're steady below zero. Not much fun outside, but I had a chance to explore the communication idea a bit more.
Making Sitecore know it's neighbors.
Production Sitecore server is very rarely alone: starting from partner developers having individual instances, to build servers, QA, etc. These servers, however, do not know anything about each other.
List of known servers, or endpoints, is stored in core database. Endpoint is basically an url to Sitecore instance along with credentials matching the user account in that instance. It's not required to store username and/or password - you can type them in when they are needed instead.
Sending Data.
Now, when Sitecore knows some addresses, we can start sending gift wrapped packages. Right click on item -> Copying -> Send To -> Select one of the servers:
Then choose whether you want to send sub items or not, input credentials if they are needed and click Next. Behind the scenes, the items are placed in a package, which is then sent to a target Sitecore instance and installed there.
The usefulness of this depends on your 'process', I suppose. Working on our sites, I often have to make incremental changes and upload them to production, both before and after the site launch. When the change is really small, the burden of building / uploading / installing package is heavy enough to try to avoid adding items altogether, if possible. I'd love to hear how it works for others and what are the repetitive bits you'd like to avoid.
Change Tracking.
This part is more like what I'm looking at next, as it's very incomplete. The idea is to use history of item changes to allow developer to bundle all items she changed today, for example, and send them away in package, much like sending individual items or branches in previous part. Some prototype bits:
A bit of impedance mismatch is that it's not possible to package item deletion, i.e there's no 'anti-item' to place in package so that it deletes a certain item during installation. I enjoy using packages as communication protocol though and extending packager is an option.
Previous posts:
* Automated Package Operations* Sitecore Build Automation
Disclaimer The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.