Sitecore 5.3 Enhancements Part 1: The new installer

Sitecore 5.3 is, as we believe Sitecore, the release which merges the requests and experiences of partners, developers and customers into one new release. Based on these experiences Sitecore has developed a brand new client and looked once again at the requirements for developers / content architects before creating this new generation of their own platform. In this serie of posts I’ve decided to write down my experiences till now and hope these posts can be the base of Sitecore 5.3 development by other developers and a helping hand for salesmen while speaking with their customers.

I have been a lucky guy during the development from 5.3. Was able to chat a bit with the engineers and got some updates by Lars, etc. They even allowed me to play a bit with an early alpha. At that time it was a bit to alpha to build a website with it, but it was at least nice to play a bit around :).
One of the things missing in this alpha was the installer. So the day the first beta came available, the installer was quite a (nice) surprise for me. For those guys who haven’t seen the installer yet, the following images show the installer step by step:

Step 1
Welcome to the next generation!
Step 2
Requirements are available!
Step 3
Please provide a license…
Step 4
A website has a name 🙂
Step 5
Choose a folder location
Step 6a
Beta 1: Choose you DBMS!
Step 6b
Beta 2: Choose your DBMS!
Do you see the difference?
Step 7
Supply server and logindata
Watch out for this and that!
Step 8
Select the files you need.
Step 9a
Get ready! For the launch!
Step 9b
Vroeeeem! 10 minutes for coffee!
Step 10
Let’s get wild!

Alright, that wasn’t so hard, was it? Small note for those who taught this is really it… This works fine if you are using one site under XP and for 2003 it works deliciously. In at least 15 minutes you’ve got everything up and running!
The installer creates a structure which is easy to understand, for this reason I’ve cloned this structure immediately as Best Practice for older Sitecore Projects at the office:

A main disadvantage is that the installer isn’t light weight. When you click on the image below, you’ll see 2 MSI-Executables which cause a total of  98% CPU usage with less then 100 Mb of memory usage… This is when the MSI  is extracted to the temp directory to run a smooth installation. Hope this will be resolved in a later stadium.

Back to the steps: Till step 6 everything is simple and as expected. Then it becomes a bit harder, what to choose? What’s the difference between SQL Server 2005 and SQL Express? As you can see this window has been changed between the 2 Beta’s. Hope it will improved a little more with information about what you can expect after installation. What kind of files, etc.
At step 7 I would appreciate a little more details about stuff you can expect, error details and help links, but without, it works fine too as long as the error stay as clear as they are. Bad point of this  window, when you use ‘Windows Integrated Security’ this won’t come up in the config-files.
For step 8, it’s a little more complicated. As I’ve requested a long time ago, you are now able to select what kind  of files you to be placed on disk, but when I’ve selected SQL Express, there not a hair on my head, which thinks about placing SQLite database on my development station. I don’t get the clue why there’s only SQLite and not all of the database or no one, just this one? Are so many people actually switching between databases during development or even when they run it on a live server?
Between step 9 and 10 you have to wait between 5 and 10 minutes. Then your Sitecore is ready. Same time as it was for unzipping the normal dists.

Deploying
First of all, this installer is 10 times prettier to take with you to your customer. The first half year we definitely have created more intranets then ever and deployed over and over on in-house servers. Sysop’s are always happier when an engineer brings him an installer instead of a dump of his source repository.
Ofcourse you still have to deploy your solution on top of this installer but with a simple MSI-installer, created in VS2005, it shouldn’t be a problem at all. It would even look structured :).

Automatic / Silent Deployment
A wish for was definitely was a quite deployment option so you would be able to integrate the installer in your continuous integration process. But I guess this is definitely a step to far for now. The installer has some commandline options, but they are limited to the default options from the different manufacturers. I will investigate this but as far as I’ve seen now, there aren’t options.

Uninstall
I did already expect it, the uninstaller work fine. It’s better to detach all your databases from the different engines, but when you’ve done that, the installer runs smoothly.

Conclusion
The new installer is in more then one way an improvement. Although there’s still room for some improvements, it’s a big step forward. Main advantages:

  • No longer configuring after you run the installer
  • Different database support
  • Pretty way which can be shown to customers

Some (possible) improvements:

  • Possibility for silent deployment
  • More help provided at the different setup steps
  • Review of the functionality provided in the installer(does someone actually want more databases for example)

As this was the first post of the serie, it isn’t the biggest and the deepest review ever. Everybody needs a begin, so do I. When you’ve got comments, additional information or …?? Don’t hesitate to contact me!

LDAP: My mistake… Don’t shoot!

My mistake.. a famous song by Marvin Gaye. He’s talking about loving a girl, I was talking about the LDAP module. Two the issues I was talking about in previous post, where my mistake…

First one, the problem with the dash. In the changelog stood, it was solved. The thing missing there was that you actually should enable it. There’s a config key which contains a regexp where the items should match to. Default this key is set to: ^\w[\w\s\.]*$. Changing this key to ^\w[\w\s\.-]*$, items with dashes are supported. Another possibility is to create a specialized handler for item-adding in the web.config. Thank you support for explaining me :).

The other thing, the nullpointer, was also my mistake. I forgot to add the 2 fields to the the Role-item in ‘Security Template.xml’ located in the shell-folder. After changing it, it didn’t work… So I supposed it wouldn’t be necessary to add the keys.. Then I found out that reloading the application pool, the issue solved… sometimes… As my security database was corrupted with useless data and I knew the XML-files in /data/modules/ were also changed, I restored an empty security database and let the script recreate the XML files by deleting them. And then it actually worked! Some little changes to the security and everybody is happy now.

Last but not least: I’ve to find out how to auto login on the forum. Tried a little today, but wasn’t successfully.

For CodeHouse I’ve the following suggestions:

  • Consider supporting user defined domains
  • Find a mode to make it possible to support user/role/group names with dashes, ampersands, etc. Now you have to support the creation of items with the same names without creating your own item-handlers.
  • Provide more and easier sample code.
  • Clear up the documentation about the updating the ‘Security Template.xml’
  • Make error messages in the importtool more readable.
  • Redesign the importtool to an Sheer UI-Wizard. Even better to handle and more like the other applications in the client.
  • Create a tool which checks the configuration.

Hope you guys work pick up the list above. 🙂
Last post on the subject will come later today: LDAP Deployment!

LDAP Module: Bloody Monday

The day wasn’t so bloody like the movie I just saw. I can definitelly advise ‘ Bloody Sunday‘ to everybody who likes historical movies. But I guess you guys aren’t interested in my opinion about Northern Ireland, British politics or even my taste of movies. You are interested in my experiences with the LDAP module today!

And they weren’t so good. Sorry CodeHouse, my total opinion about the module is still good, altough there are some ‘dirty points’ and they definitelly screwed my day! Let’s list them:

  • I configured a intranet domain, as the installation will be used for extranet development in the future, but the module does only support ‘extranet’ and ‘sitecore’.
  • Altough the Release Notes say that you can replicate Groups and Users with dashes (‘-‘), the version on SDN5 doesn’t support this.
  • For some strange reason the Extranet Login script gives a nullpointer while trying to update user<->group privileges. Which is done every logon, as I’m implementing Mixed  Mode.

So far definitelly bad. But the module has definitelly goods points:

  • Implementing the module is definitelly easy. When you know what you’re doing with Active Directory, you know how to implement the module.
  • The module is quite fast for such heavy imports he’s doing. I was definitelly surprised!
  • The information provided with the module is more then enough, but it’s not really structured. Would be nice to have a walktrough how to implement it for both the Sitecore as the Extranet domain.
  • Managing an configuring is done excellent using Sitecore Items and a simpel Sheer App. It’s simple enough for normal users.

The four point directly above are definitelly not bad altough till now, there were to many obstacles on my way. Hope to get everything to work before the end of the day tomorrow, else it would definitelly ruine the shedule.
Tomorrow, I’ll come back with a full guide how to implement it for the ‘Extranet’. It will be my Deploment plan, bit modified so customer specific configurations won’t unclear your view.

Start of a serie… Sitecore 5.3 Explored

From tomorrow on I’m going to try to post every 2 days a part of this serie about Sitecore 5.3. The serie will include both user-experience and technical articles. I’ve already finished the index with the postsubjects:

  • Sitecore 5.3 Enchancements Part 1: The new installer, the brand new Sitecore installer discussed. Also looking at the possibilities for silent/automated deployment.
  • Sitecore 5.3 Enchancements Part 2: Different client modes, as Sitecore agrees on the point that there’s a major difference between previewing and webediting, it’s changed now. Also, don’t forget the developer look mode.
  • Sitecore 5.3 Enchancements Part 3: Updated Sheer UI, inside out CLR Sheer discussed with some interesting quotes from the HQ in Denmark.
  • Sitecore 5.3 Enchancements Part 4: The Content Editor, everybody has seen it, heard the *wow*-word more then once, but what kind of inpact does the new design actually have?
  • Sitecore 5.3 Enchancements Part 5: Changed applications, next to the CE, there has been lots of changes, for example the packager.
  • Sitecore 5.3 Enchancements Part 6: Developing using the Template Manager and Sitecore IDE, reviewing and rating the new developer options.
  • Sitecore 5.3 Enchancements Part 7: API Changes discussed I, altough the changes aren’t that big, there are some significant changes. Discuss some of them here.
  • Sitecore 5.3 Enchancements Part 8: API Changes discussed II, another one full about the remoting options.
  • Sitecore 5.3 Enchancements Part 9: Databases, final support for several databases. What about preformence, data adapters, etc?
  • Sitecore 5.3 Enchancements Part 10: Template changes reviewed, last topic, changes on the templates. As this topic is quite virtual for most developers, hope I can give you guys some good examples on how this stuff works.

Suggestions are welcome. And as not all articles above are already written, the list above may change a little.

Notice: all these posts will be based on the latest version available to for download on SDN. This can be a beta/release candidate. Posts might be updated after the final release.

Implementing the Sitecore LDAP-Module, first impression

It is actually quite cool to write your posts using Windows Live Writer :)!

I want to talk today about the LDAP module. Since friday I’m implementing it for one of our customers. Goal: after the users are logged into the network, they shouldn’t be prompted by the browser when surfing on the intranet. Subgoals: discovering the possibilites for futher intergration and possibilities to use it in combination with the forum module.

As I didn’t do anything advanced with LDAP/Active Directory before, I decided to listen to the advise of Sitecore. So, friday morning I did start reading, wrote some code, and started installing the module at around 14:00h… The first domain-user logged in on 14:30… Uhmm, half an hour later? Yes! Only had some problems that the module wasn’t able to use other configured domains(Reflector showed me the engineers did configure “extranet” and “sitecore” in their code). Switching domains for a website isn’t the problem…

So far good, going to spent the following week on how to implement this at the customer as their intranet is already fully operational. And… intergration with the forum module…

External aliases

This morning, one of my collegues noticed that you couldn’t use Aliases for external linking. Well… that sounds likea challenge for me :).
The following code is not supported, should work with 5.2 and is extremely unoptimised :P!

using System;
using Sitecore.Pipelines.HttpRequest;
using Sitecore.Data.Items;
using Sitecore.Data.Fields;

namespace LECTRIC.SC.Pipelines
{
class ExternalAliasResolver : AliasResolver
{
public new void Process(HttpRequestArgs args)
{
if (Sitecore.Configuration.Settings.AliasesActive &&
Sitecore.Context.Database != null &&
Sitecore.Context.Database.Aliases.Exists(args.LocalPath))
{
Item aliasItem = Sitecore.Context.Database.GetItem(“/sitecore/system/Aliases” + args.LocalPath);
if(aliasItem != null)
{
LinkField linkField = aliasItem.Fields[“Linked item”];
if (linkField != null && !linkField.IsInternal)
{
System.Web.HttpContext.Current.Response.Redirect(linkField.Url);
}
else
{
base.Process(args);
}
}
}
}
}
}

Getting it to work, you should replace
<processor type=”Sitecore.Pipelines.HttpRequest.AliasResolver, Sitecore.Kernel”/>
with:
<processor type=”LECTRIC.SC.Pipelines.ExternalAliasResolver, LECTRIC.Sitecore”/>
in the httpRequestBegin-pipe line in the Web.config.

Notice that this will decrease the preformance of a request(dnot dramatical, but a little) and that links should be fileld in the right way(‘Insert External link’) in the aliases section. And as you can see, the Alias-folder is hardcoded as it isn’t defined in the web.config. Suggestions for optimising are welcome…

Enjoy!

Sitecore evangelism! Where are the others?

I’m blogging for 8 months now about the product Sitecore and when I believe this blogpost, I can say I’m a Sitecore Evangelist. I can discuss features of Sitecore, look at the good and bad side of it, write this down and instead of ignoring me, the Sitecore HQ does take me serious. Ofcourse they have to take me serious as a partner, but they also take me seruious as just a techy.

Lars Fløe Nielsen
Lars is known as THE Sitecore Evangelist @ Sitecore.
Even Robert Scoble is afraid of his enthusiasm!

As you have seen in the past, there are sometimes huge gaps between entries on this blog. Mostly, those gaps are here because I’m not able to talk about product because of customer restrictions, or because we are just working without discovering a lot of new stuff. For this reason I’m looking for subjects to write about. So when you’ve just released a nice new Sitecore solution or when you’ve worked with nice technology in combination with Sitecore, please let me know.

When I look at the visitor count, you suppose, I’m just one of a big network, so please impress me! Say hi and you are wrong, Alex! I’m begging you guys :D!
Just contact me at LECTRIC using email or post a comment. Co-authors are also welcome!

New website and changes to the license model

For the first time after my vacation, I opened sitecore.net to see if there was some news what didn’t reach me yet. And actually there was… A brand new website! Good job Alexey! The website looks 10 times better. The new feature section is a nice addition to the site. Visiters are now able to explore the product. In the past our customers weren’t able to get to know more about the product using the website. Hope they are able now.
I also like the localisation functionality which auto selects partners, news, etc, based on your settings. The only thing missing are the ‘hot’ babes ;).


New Sitecore homepage without babes.

While surfing on the new website, I’ve discovert that Sitecore has actually made some changes to the license model. Maybe my first blog post helped a bit ;).
The following changes where made to the Small Business-edition:

  • 2 CPU’s are now supported
  • 2 concurrent editors(tought this was just 1)
  • Full database support(except Oracle?)

Finally it’s a Small Business-edition which closely matches other SB-solutions like those from Microsoft. Good work guys :)!

Yes… I’m back

At the office they already mentioned… I’m back from holiday. Had some nice days, altough it was definitelly to short.
The first week was quite stressfull. You have to turn the button back and because of the vactions of other collegues and some out-of-the-office-work of the projectmanagers, it was a quite strange week. You should never make appointments about releasing websites in the summer, but sometimes you just have to. Next wednesday we are going to release a new project which is, for our customer, a large step into the world. It’s a Sitecore production which is fully search optimised. Details off the project will be here on wednesday.

After it, I’ve to implement the LDAP module in mixed mode for one of our customers. Which can become a quite interesting job as we haven’t implemented the module before at the office. In the past 6 months we’ve made 2 or 3 big intranets, both with a LDAP-module by license, but the implementation will follow in release 2…
Futher details, tips and trics, will be here next week.

As promised, on wednesday I’ll start blogging about 5.3. I’ve got the first 3 posts ready, so I can give some lecture on daily base(guess it’s better to do an entry every 2 days to give me some air to breath). I’ve decided to start the project ‘CMSHUNK’ at the 1st of october.

That’s the personal update for now, fooks. Cheers :).

Sitecore Holiday

I’ve packed some clothes and I’m about to shutdown my notebook. It’s holiday time. It’s just a week but it feels like it’s a while ago. It has been at least 3 Sitecore productions ago. Actually, it was in may
It’s good to have some time for yourself some days and for me this means I actually can start working on some new stuff, personally. For example: Promised Lars to show what should be improved on the Sitecore sheduler. Going to figure out how to test and show this.

After my vacation I plan to do the following comunity-related actions:

  1. Write a serie about 5.3(started already but haven’t fully finished a single post
  2. Compare Sitecore to the world. Actually planning some objective reviews of MediaSurface, Tridion and SmartSite
  3. Merge my blogs to one blog, guess the name will become something like ‘CMSHunk’. Working on the design at the moment and even more on posibility for people to just watch the Sitecore part. Would be much easier when I was able to run Sitecore… 😛
  4. Become more active in the Yahoo community, which also means password recovery 😉
  5. Together with Ruben ‘Usability’ Timmerman I’m going to explain a lot about one of our newest production, which is Search and Usability optimised.

Well that’s it for now, fooks. Here’s my case, with both collector items on top:

At the office, we still are planning to visit Kopenahgen, hope I’m able to take a picture on the Sitecore bike! 😉

See you guys around.