I have been working with WCM & ECM for over 7 years. Designing and developing solutions for my customers. I have worked with customer of all sizes from large corporate and fortune 100 companies, to Federal Agencies, and smaller companies. This blog will be dedicated to helping others in the CMS industry find solutions that are sometimes outside the box. Having worked for a large ECM vendor for several years it has been nice to not be as restricted in the solutions that I provide.

About Me

Saturday, June 30, 2007

Alfresco 2.1 (Community 10 minute review)

I would like to think that I am so good that 10 minutes is all I need to tell if something is good or not, but to be honest this 10 minute review will take a little longer. I'm starting with a fairly clean Fedora 7 Install.
The download of the Alfresco-Community Linux install version is still going, so another 5 minutes and I will be able to get started. I will not deduct this from my 10 minutes.

While the download is finishing let me say that I have been looking forward to this release for a while. I believe this will be a release that will either set Alfresco ahead of the competition, or it will be one that just misses the mark. It's bad to think that it could be one or the other, but to be honest think it could. I have liked where Alfresco is, and appears to be going, but coming from a software vendor before I realize that it's often difficult to please everyone.

Some of the newer features of Alfresco that I'm looking forward to are:
  • Web Scripts
  • Search for WCM
  • Content Launch and Expiration
I should state that I primarily work on the WCM side, so there are lots of other features that you should check out for both WCM, and ECM: http://wiki.alfresco.com/wiki/Release_2.1

Ok the download has finished... It is now 10:56 pm let's see what happens, ok my boss IM'ed me for something. Ok I am back. It's now 11:15 pm... so restarting the clock.

I will include some screen shots of the install:

Now let's do the WCM Install...

Ok, now to read the Readme for mysql... I dislike reading and would rather just turn it on, but sometimes you need to read the instructions. There is a configuration for changing the Database to mysql.

- custom-repository.properties

I did not have to touch this file, but it's in the readme so check on yours:
- custom-hibernate-dialect.properties

Let's start it up:

Let's try it out now... it's been more than 10 min... i can blame it on the snapshots, so let's assume the above would have taken 5 min, without the screen shots... In reality it's 11:30 now.

So far so good, now issues with the startup:

Creating a test project:

The rest of the wizard looks like normal. Doing a bulk upload to get me started...

My Alfresco with the WebForm Web Script. I do like this. It shows you the forms (if I had any) and the modified files.

Preview opens the code view... I don't like that. Would be nice to see the world icon and do a real preview, but perhaps this is something I will try to do later on...

File submission, and notice the content launch and expiration. These features will be very nice.

Web Script of Tasks. I like this one, but again it needs the preview link. If you click preview here it shows the source code. It would be nice to show a real preview. You can click manage task
and see the preview which is nice.

The manage task window also displays the launch date.

Displays as pending submission. Which is nice as well.

In conclusion... I like what I see so far and like the direction. On search I am a little confused. It says "Search: Provides asynchronous indexing of the latest Staging snapshot to support search in web apps being built and managed in Alfresco. Designed for easy use within web scripts so that deployed web pages can quickly generate lists of items published via Alfresco." in the release notes. I was under the impression that Open Search would also be able to search the content in a Web Project. This is something that is critical to general users. Most of my users if they have a search box in the U.I. they are going to wonder why their content does not show up, and then you have to say oh it will, just not yet. So hopefully I am wrong and this is something that can be turned on or a simple web script developed. Either way I'll have to look into it.

More later...


P.S. My 10 minute review turned into an hour...

Monday, April 2, 2007

My Junk Linux Box or A little Fun

I could not decide on a title for this entry... so I apologize. What I would like to mention is why the difficulty with deciding on the title.

The First Title: I have a Junk Linux Box... that said with the warmest endearment of the word junk, in other words it's a spare box that I beat the heck out of, and do rely on a lot, but all in all it's a junker. It is setup on an old pc with as much ram as it can handle, and I rebuild it about once ever 4 or 5 months. So this box does exactly what I need it to do and I do care for it a lot, but all in all if it dies I'll simply replace whatever fries on it and bring it back to life, but this article is not about my development environment. It is more about:

The Second Title: I wanted to have a little fun this weekend, and while checking out another CMS product called OpenCMS (part of another project) I decided to see if I could have a little fun.

Can Alfresco WCM & OpenCMS Live Together in Alfresco's Tomcat Instance

Taking the life of my "Junk Linux Box" in hand I started reading more and more about Alfresco and OpenCMS's requirements and architecture. I could not see anything that said "DO NOT DO THIS!" "DUMB IDEA" so I continued on.

Before I forget I should also mention that this box is running CentOS, and has MySql, Apache, MediaWiki, and Alfresco 2.0 on it already.

Following the OpenCMS (instructions) I saw that for the most part having Alfresco WCM gave me most of what I needed: Java, Tomcat, and MySql.

So I kept going... still no signs of warnings saying "Dave stop now!".

For those of you who've never installed OpenCMS it is a very straightforward install. You simply deploy the opencms.war file into your Tomcat Instance. Tomcat then expands the war file (unless configured not to) when it is started.

I then started up Alfresco, and checked out the tomcat logs and also the webapps directory and sure enough Alfresco's tomcat instance was expanding the war file nicely. There we still no notes in the logs saying "Stop now" so I moved onto the next step.

After tomcat finished starting I went to the browser and typed in: http://localhost:8080/opencms/setup/ and sure enough the OpenCMS Setup-Wizard was waiting to go.

I checked the logs and Alfresco 2.0 with WCM was not complaining. So I went through the wizard, and after setting up the DataBase I was able to get OpenCMS and Alfresco 2.0 with WCM running together with out any apparent issues.

So while having a little fun I have proved to myself that Alfresco and OpenCMS can run on Alfresco's Tomcat instance. I am going to keep working with this and as I go forward if I see any OpenCMS or Alfresco Issues I will let everyone know, but so far it looks good.

Saturday, March 10, 2007

Alfresco and...

I am very lucky in the position I have right now. I am able to work with Alfresco's WCM and Interwoven's TeamSite. In fact I finished upgrading a customer to the new version of TeamSite over the weekend. Working with both products the way I have been for a while now has given me cause to pause for a second and say Alfresco and who else? Who will be the top CMS vendors in the future.

I have evaluated and been in competition with several CMS vendors both open and closed source in the past, and I believe that Alfresco will become the MySql of the CMS industry. So out of the closed source products which one will win.

I can not say maybe someone out there can let me know their thoughts.

In my opinion in order for any of the remaining CMS/ECM vendors to rise to the top they will need to do the following.

- Provide better licensing. The current license model for most of the ECM/CMS vendors is often difficult to navigate, and even more difficult to expand on. I have had customers in the past want to add more users or more content only to get lost in the license acquisition nightmare that sometimes happens.

- Stop trying to sell, and actually do some customer management. A lot of the issues that come up with CMS implementations and post implementation could be avoided if the sales force did not only come around when they had something "brand new" to sell the client. Come by when you want to show me a new "Included" CMS feature that will encourage me to upgrade, and not one the client has been asking for a long time only to find out in the new version it's there, but for a small 20K fee.

- Start spending time and resources to make your existing product base better. Get rid of bugs that have been around for years, and issues that you have known about. Start spending engineering dollars on development, and new ideas. How much of ever dollar that a customer spends with a traditional vendor actually goes to new development. I bet the number is very low.

- Stop trying to get all your customers to come to some place for a nice event only to be shown a message that does not make sense, and if you pay attention from year to year it is only on very few occasions that the message actually works and is just not more marketing. For the most part these events end up being a feeding frenzy when you try to go from one session to the other with the Account Executives (Sales guys) coming at you from all directions.

- Start having fun, relax, stop living your life from QTR to QTR. Taking this short sided view is what has put the ECM/CMS industry as far behind as it is. When I first started with WCM it was exciting. The people were happy, and everyone tried their best to make the product work. The customers felt the excitement. Now it's just not there from a lot of the vendors.

Anyway these are my thoughts on what another vendor needs to do to compete in what will one day become a 2 or 3 player industry.

Wednesday, February 21, 2007

Backups and Cross Platform Data?


In looking at possible backup solutions for Alfresco with MySql I found a post on the forum that mentioned the basics: http://forums.alfresco.com/viewtopic.php?t=2761&highlight=backup

I decided to take this post and carry things a little bit further. I wanted something that could not only backup Alfresco but do the restore.

The script below is executed with one of two commands:

alfresco_backup.sh -backup - This archives the alf_data directory; as well as, does an export from Mysql of the Alfresco database.

alfresco_backup.sh -restore - This restores the information by first moving the existing alf_data directory, and then replacing it with the archive contents. It also imports the Mysql Alfresco database.

Note: At this time the script does not drop, or create the alfresco database. It also does not set the permissions on the database. I wanted to wait until GA to finalize the script in case there were any changes.

Does anyone know on the restore is dropping the database is absolutely necessary? or is there a better way? Also is it possible to import only one webproject?

Importing into another Instance

The script is also able to backup Alfresco and restore it to another Alfresco instance. I copied the backup files to another server and ran the script with the restore options. This did import the content, and the alf_data into the other system. The active workflows were all in tact and things appeared to be good.

Cross Platform

I wanted to take this to the next level so manually I followed what the script did and was able to zip up the alf_data directory, and import the alfresco database into Mysql running on a Windows 2000 Server. All of the workflows and content appeared to be unharmed by the move in Operating systems.

I remember back to my days at Interwoven and when I was there it was possible to port the backing store between machines, but only if they were on the same operating system flavor and early on that was even difficult.

So very nice Alfresco!

My question now is will this porting from OS to OS be supported or are there issues that I could/should expect.


# Start or stop Alfresco server
# Set the following to where Tomcat is installed
# Old Directory is moved with the time in miliseconds as the value

# Run this script with either "backup" or "restore" as the option.

# Script assumes that Alfresco Database exists and that the user alfresco
# has been granted appropriate permissions
# i.e.
# from mysql prompt: create database alfresco;
# grant all on alfresco.* to 'alfresco'@'localhost' identified by 'alfresco' with grant option;
# grant all on alfresco.* to 'alfresco'@'localhost.localdomain' identified by 'alfresco' with grant option;
# Thanks to the alfresco forum:http://forums.alfresco.com/viewtopic.php?t=2761&highlight=backup
# Questions: David Musser - dmusser@eyestreet.com
# NOTE: The script also assumes that alfresco is NOT running during the backup.
export ALF_DATA_BASE=/etc/opt/alfresco
export ALF_DATA_DIRNAME=alf_data
export BACKUP_DIR=/backup
export DB_USERNAME=alfresco
export DB_PWD=alfresco
export DB_NAME=alfresco

if [ "$1" = "backup" ]; then
mysqldump -u$DB_USERNAME -p$DB_PWD $DB_NAME > $DB_NAME.sql

elif [ "$1" = "restore" ]; then
gzip -d alf_data.tgz
tar -xvf alf_data.tar


mysql -u$DB_USERNAME -p$DB_PWD $DB_NAME < $DB_NAME.sql


Please test this on a server you do not care about! Do not get mad at me if the server explodes, and the sky falls etc... As I mentioned above comments are welcome!

Saturday, January 27, 2007

So Who Does Testing Anymore?

In the last few years I have noticed that less and less web developers do enough testing on their content. Since a lot of us are responsible for the content management why should we care.

The answer is simple. It is very easy for them and others to mistake what a CMS system does in the form or an xform, or templated content instead of something with their page. If you add that to the fact that we are all responsible for the sites under our control what can we do to help.

We have all seen the issues, and reported them to the developer only to be told any one of the following:

"It looked good in Firefox"
"I tested it in I.E. 7"
"You know XP displays things differently"
"Who uses a MAC?"

So to start off : I really like Firefox as well, and use it all the time, but the reality is for most of the sites that I manage Firefox is still not used as much as I.E, so looking at something mainly in Firefox is a bad idea, and I do try to point that out to the developers when this happens.

I.E. 7... ok this is new, and a lot of people are using it. Some by choice, some with just how Microsoft does the updates. With this said both browser handle certain things differently and again you need to make sure your developers who give you the base pages for you to create templates or xforms from have tested in both.

XP handles things differently? I've heard this and ones like it, and I know that on different operating systems there can be differences but again if they know something does not work in an OS or has been known to fail then I have a great idea "Don't do that!"

Who uses a Mac... Well I agree! Who does... well the problem with this is that usually the companies that have settled on a Mac try to only work with other companies and sites that look good with what they have. It only makes sense. So when possible if there is a chance someone with a Mac is going to hit your site then again have the developers test in it.

With all of the above said as we manage sites we are going to have to deal with this as best we can. So what I have found that may help you are to find out from the site owner(s) what their target audience is, and then try to have a testing environment that can test in all of the different browser versions, and operating systems. Tools like VMWare and others can help with this, or even the old dual boot on a test machine to give you multiple OS's could help.

For xforms and template development what I advise doing is to verify before you get into building the presentations that what you are working with has been tested. It does not take long to know.

I realize that changing a presentation and re-generating a page/site, or a css change is not that complex but it will help you when you hear from someone who is not the web developer that a page created with your xform looked bad.

With the above said I use linux so my blog looks good to me, and who out there does not use linux! So no complaints on the format of the blog ;-)

Wednesday, January 24, 2007

What is the best way to do headers and footers in a CMS system?

What is the best header and footer method? I have had this question put to me in various ways in my CMS career, and have answered in as many ways that supported the CMS vendor I was working for at the time, but I never though of it from the purely non vendor related CMS solution. Other customers would already have a method in place and simply want to make sure that the CMS system that they had just purchased would support their current method. I am proud to say that we were able to satisfy the clients requirements when this did come up, but still what is the answer?

What is the best header and footer method? Perl! That's the answer...

Ok a little humor there, and by no means do I believe that this post will solve this question, but rather give us all something to think about the next time the question comes to us so that we can better analyze the requirements.

Size Does Matter


If you have a small site, in my opinion you do not need to separate the header and footers. This is assuming that your site is small, and will not change or grow very much or often. Believe it or not I have seen customers use Enterprise level CMS systems for 20 pages, granted that was way back when, but I'm still sure some of them are around. So if you have something with less that 10 pages and it will not change very often simply creating a static html page that you use as a template will suffice.

Medium & Beyond

Once you get beyond the 20 or so pages it often becomes a pain to update a phone number change, the header graphic or what have you. So you should look at the other factors.


How many customers do you have visiting your site, and what happens when there is a surge. I have seen advertisements on TV and heard the next day that people went to the site after and it was down. If you ever have anything like this happen to you, check out akamai.com for one, and also look at how your site is configured.

Frequency of Updates

When thinking about headers and footers we also have to think about how often do they change, and who has the rights to change them. We also need to make sure that there is a process involved in this as well.

Now back to CMS

Ok the above are by no means the only factors, but in my mind they are some of the big ones. I almost mentioned technology available, but if you think of it if you do not have the right tools available and you base your decision on what's available vs what's the best solution you really have not served yourself or your client well. I do understand that a lot of times that is what we have to do, but for now let's assume your client say "Hey buy what works!"

So what is the best method...

I really still don't know from the above list. Let me point out some that I don't think work for most situation.

- Database driven : I have never liked purely database driven site. Having a web site that has to make a request from a database each time, and especially for header and footer do not work when you try to expand. If you get 10 million hits in the next hour will your database be able to handle it?

- Static Pages: I covered this earlier, but it is worth saying. If you have any size to your content at all static pages do not work.

- Header/Footer driven by template or forms engine: I have seen sites that use templating or forms to capture the content, and then they generate the static page with the header and footer included. I have never been a fan of this. The main reason is that if the header and footer change you have to re-generate the entire site. So add that to what if some of these are in a CMS system where the files are locked or otherwise in a workflow and you can have nothing but trouble.

So what works? If you won't say the best method.

- Server Side Includes: I have seen server side includes using shtm, and jsp includes. Depending on the content type you have there are other include methods that work on the server and these function very well. The main benefit of these that I see is that they allow you to separate the content contributors from your site designers. You can separate them by workarea/sandbox etc, and even have that content go through a separate workflow.

- Edge Side Include: Like server side includes these are includes that work with Akamai, and these allow you similar functionality.


If you have a method that works for you that I do not mention here please do shoot me an email or post a comment to the blog.

In another post I will try to show some examples of the above methods with Alfresco as I go further with their Beta!

Whoops I did forget we could do the headers and footers in frames :-)

Thursday, January 18, 2007

Alfresco Content Load


This article continues my demonstrations of the user interfaces for Alfresco at their current build state. This demonstration is with revision 344 using the command line SVN client. This post will demonstrate the following:
- Bulk import of web site
- Individual file import

This demonstration assumes that a test web project already exists, you have logged in and navigated to the project space.

Bulk Import

1) Select the appropriate user sandbox. For this I selected the admin sandbox by clicking the browser link.

2) From the admin sandbox: Select the create: bulk import in the upper right hand side of the screen.

3) From the Bulk Import: Click Browse to navigate to a zip file containing your web site.

4) From the file browser: Navigate to the zip file containing the web site and click open.

5) From the Bulk Import screen: Click upload to upload the zip file to Alfresco

6) From the Bulk Import: Click OK to have Alfresco crack open the zip file and insert the content in the sandbox.

7) From the Bulk Import: Notice the status lights.

8) It may be necessary to stop and start the virtual server using /alfrescohome/virtual_stop.sh, and virtual_start.sh to enable the new area to preview properly. This could just be an issue with the build I have, but it may be necessary when first creating a space.

9) Content from import is displayed

Individual File Import

1) Navigate within a sandbox to the directory you would like to import content into. For this demonstration we will assume we need to add a new page under company.

2) From the sandbox in teh company directory: Select create, and add content.

3) From the add content screen; Browse for content, and click upload to upload the file to Alfresco.

4) From the Add Content Screen: Verify the file uploaded successfully, and that the correct content type is selected, and click OK.

5) The system returns you to the sandbox where you can see the file imported.

6) To preview content from the sandbox click the eye icon across from the content you would like to preview. This will open a new browser window to display the content in context.

This should help you see how to do a bulk import of content. This could be for the first initial load of content or for a load of a large content set. I know from my work with some other CMS systems that often the import of content beyond the sales person's speak of "Oh it's drag and drop" a utility like this can come in handy.

My next article will deal with the question of what is the best method to do include files. This will not be something focused solely on Alfresco, but I will take the time while demonstrating a method we are using with Alfresco to show that interface as well.

For further information or questions please email me: dmusser@eyestreet.com

Thursday, January 11, 2007

Create an Alfresco Web Content Management (WCM) Project
Alfresco is the leading open source alternative for enterprise content management. This open source alternative will allow companies to take advantage of Alfresco's engineering expertise while utilizing an open source product.

At Eye Street we have been working closely with Alfresco on training, alfresco.com, and on other initiatives. Part of our work with them has let us to becoming involved in the development of a content deploy application. Part of this development has required that we move past the preview release and utilize the repository Alfresco has set up to allow us to do frequent builds.

Create Web Project
This post is based on Build 291:

1) Login to alfresco: http://servername:8080/alfresco

2) From the My Alfresco Screen click: My Home (located at the top left)

3) From My Home click: Web Projects

4) From Web Projects click: Create Web Project

5) From Step One - Web Project Details enter the following information then click next to continue:
  • Name:
  • DNS name:
  • Default Webapp:
  • Title
  • Description

6) From Step Two - Configure Web Content Forms click add to list, to add existing web forms to the web project, or click create web form to create a new form. For this example I will click add to list for Body Content and Job Listing.

7) From Step Two - Configure Web Content Forms click next

8) From Step Three - Configure Workflows click add to list to add existing workflows to the project, and click next.

9) From Step Four - Add users search on the user name you wish to add, highlight that user, and their role, and click add to list.

10) From Step Four - Add Users after adding all users and setting their roles click next.

11) From Step Five - Email Users, fill in required information, change the radio button to yes (if smtp server configured) and click next, otherwise leave no selected and click next.

12) Review Summary and click finish.

13) From Web Project Page see your click on your new project's name or world icon to navigate into your project.

14) From project page notice the staging sand box, user sandboxes and all the other options available.


This should help you get started with Alfresco WCM. My next post will continue along this lines and demonstrate loading of content, preview of content, and basic xforms and workflows.

For further information or with questions or comments please email me: dmusser@eyestreet.com.